RE: [PHP-DEV] Type hints with null default values

From: Date: Sat, 16 Oct 2004 23:01:57 +0000
Subject: RE: [PHP-DEV] Type hints with null default values
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-13357@lists.php.net to get a copy of this message
Robert Silva wrote: > PHP doesn't have a concept of a "null" reference though. So to say that > every other language allows it is not a valid argument. The other > languages allow it because the language supports it. And that seems to be > what the arguments against it centered around. > > I think a compromise would be to allow the argument to be optional but > still enforce the type hint. What this doesn't address fully is multiple > optional type hinted arguments. > > function A(ZObj $arg2=null, ZObj $arg3=null) {} > > How would you pass $arg3 if you didn't have anything to pass for $arg2. > Maybe that's just an inherent restriction of the language...to pass $arg3, > you have to pass a ZObj as $arg2. Since PHP doesn't support explicit method overloading, we should support some form of telling the function that $arg2 wasn't passed. This problem can be solved with named parameters instead os positional ones, but someone suggested it a long ago and, at that moment, it would not be feasible. > > Someone else suggested adding null references to the language: > > ZObj $obj = null; > > But I don't think that is the right solution either not to mention the > nightmare of actually implementing it. It was supported before(until May), isn't it ? IMHO, what we have now is "not null typehints" so what's the matter if we accept "not null typehints" when we have this construction: function A(ZObj $arg2, ZObj $arg3) {} and "null typehints" with this: function A(ZObj $arg2=null, ZObj $arg3=null) {} as we supported before(except that with the first construction nulls are not allowed). Maybe I'm "blind" but I can't see the problem that Marcus pointed anymore. If I can remember, he wants a way to enforce typehints not allowing nulls: construction-1 does it. I really need optional typehints and construction-2 supports it. IMHO, everybody would be happy. Any comments ? Regards, Cristiano Duarte

« previous php.internals (#13357) next »