People keep calling the following invalid:

function method(MyClass $param1=null, $param2)

I'm way behind the times (running 4.3.6), but take a
look at how 4.3.6 behaves!:

<?
function method($param1=null,$param2) {
   print "$param1:$param2\n";
}
method(1,2);
method(1);
?>

produces

1:2

Warning: Missing argument 2 for method() in /tmp/badopt.php on line 2
1:
Notice: Undefined variable:  param2 in /tmp/badopt.php on line 3

***********
*** Perfect!  PHP already accepts "=null" before a mandatory
*** parameter and already knows not to use the null as a 
*** default value if a mandatory parameter follows!  That's
*** exactly what you want for the type hint that allows null
*** case.
***********

- Todd

On Tue, 2004-10-19 at 10:29, Todd Ruth wrote:
> On Tue, 2004-10-19 at 02:42, Christian Schneider wrote:
> > The only restrictions I see is that it makes the parameter optional as 
> > well (something I don't consider a problem as it is probably desirable 
> > in most cases anyway to be able to leave out an explicit null) and that 
> > it only works if no mandatory parameter follows, e.g.
> > function method(MyClass $obj = null, $mandatory);
> > is not possible. Not a real problem either IMHO.
> 
> Is it an implementation difficulty that makes that example
> "not possible"?  If not, I don't see a problem with it.
> It just means the first parameter is optional in the
> sense that null is allowed.  I would be allowed to
> call "method(null, $param)".  "method($param)" would
> not be legal.  In the implementation, all "optional"
> parameters before the last mandatory parameter would
> be required to be specified by the caller but allowed
> to be null.
> 
> I don't believe the argument that a parameter should
> be allowed to be optional but not allowed to be specified
> as null.  If I'm allowed to leave out the argument
> entirely, it doesn't do any harm to give me 2 ways to
> say I'm leaving out the argument: one by actually
> not providing an argument and the other by providing
> a null.  There is a subtle difference, but it is a
> difference that is already difficult make use of in
> php without func_get_args (not that that's a bad thing).
> 
> $.02 (well, less than that)
> 
> - Todd

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to