I encountered a weird problem with ReflectionFunction, described in ticket 44139 of PHP Bugs.
If for some reason you need to call with invoke, or invokeArgs, a function like array_unshift (that accepts internally the array by reference) you could use this code to avoid the generated warning or fatal error.
<?php
function unshift(){
$ref = new ReflectionFunction('array_unshift');
$arguments = func_get_args();
return $ref->invokeArgs(array_merge(array(&$this->arr), $arguments));
}
?>
I don't know about performances (you can create an array manually too, starting from array(&$this->something) and adding arguments). However, it seems to work correctly without problems, at least until the send by reference will be usable with one single value ...
ReflectionFunction::invokeArgs
(PHP 5 >= 5.1.0)
ReflectionFunction::invokeArgs — Invokes function args
Description
Invokes args.
Warning
This function is currently not documented; only its argument list is available.
Parameters
- args
-
The args to invoke.
Return Values
See Also
- ReflectionFunction::invoke - Invokes function
- ReflectionFunctionAbstract::getNumberOfParameters - Gets number of parameters
- __invoke
ReflectionFunction::invokeArgs
Andrea Giammarchi
17-Feb-2008 02:41
17-Feb-2008 02:41
