On Nov 24 12:28:38, John Bafford wrote: > Hi, > > I filed a bug report with an attached patch that adds an E_STRICT warning > when defining a function with a required parameter after an optional function > parameter, for example: > > function foo($optional = 1, $required) {} > > Although doing this works, code written like that is probably making a faulty > assumption somewhere, and emitting this error would help raise the quality of > php code. > > The bug and patch are here: http://bugs.php.net/bug.php?id=53399 > > The patch applies against both the PHP 5.3 branch, and trunk. I'm not sure > I'd advocate including it in PHP 5.3, but I'd definitely like to see it in > 5.4. The patch also includes two tests, and fixes this problem in the > Zend/tests/call_user_func_005.phpt test, which is the only test I found that > fails as a result. > > At some point in the future, I would like to make this a more severe error > than an E_STRICT, but I'd rather not immediately break code that (until now) > worked without warning. > > Thoughts/comments?
Given the semantics of PHP arguments, there is "nothing wrong" with defining a required argument after an optional one, and in some cases it is required. Consider: function foo(Plop $a, $b) {} if you want to allow 'null' for $a as well, you have to write: function foo(Plop $a = null, $b) {} Best, > > -John > > -- > John Bafford > http://bafford.com/ > > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > -- Etienne Kneuss http://www.colder.ch -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php