ZF2-142: Zend\Di ignores default parameters values
Description
When method parameter has default value it is ignored by Zend\Di and it passes {{NULL}} if parameter is not defined explicitly. As an example try creating {{Zend\Authentication\Storage\Session}} without any parameters defined in Di configuration - it's constructor allows to create instance without passing any parameter and assigns default values then. But Di sees no parameter values in configuration and passes {{NULL}}, which overrides default values.
I think Di should check if parameter is specified explicitly to {{NULL}} in instance manager configuration and if not, do not pass anything (even NULL).
Problem lies in library/Zend/Di/Di.php at line 616 (commit 9bd4f0a30b1ab6b0d3ab2263b987a35bcab30393):
{{$resolvedParams[$index] = null;}} should assign default parameter vlaue if not explicitly specified by Di definition.
Comments
Posted by Dominic Watson (intellix) on 2012-01-22T18:07:29.000+0000
Let me just say... I'm new to ZF1 and ZF2 so went straight to ZF2. Just spent 7 hours to come across this... I just could not get Session to work and thought it was because I wasn't doing it correctly.
Would be nice to have this fixed or known about
Posted by Ralph Schindler (ralph) on 2012-10-08T20:15:32.000+0000
This issue has been closed on Jira and moved to GitHub for issue tracking. To continue following the resolution of this issues, please visit: https://github.com/zendframework/zf2/issues/2451