我需要调用一个动态函数并将当前对象作为参考发送到所述函数中。
在PHP 5.3中,这与PHP 5.4相反:
$value = call_user_func("MyFunction", $value, $row, $this,etc....); // using $this because this call happends inside an object
MyFunction的位置:
function MyFunction($value,&$row,&$column,&$grid,etc...){
...
}// myFunction is a standalone function, not inside any object
在PHP 5.4中,我得到错误"参数应该是一个参考,给出的值"。 相应的错误是指call_user_func行的$ this参数。 似乎如果我在调用中直接指定$ this,它将被视为pass-by-value,因为如果我这样做,它可以工作:
$that = &$this;
$value = call_user_func("MyFunction", $value, $row, $that,etc....);
我必须使用与当前对象相关的所有其他参数。
问题:还有其他更优雅的方法吗?我错过了什么吗?
答案 0 :(得分:2)
您首先不需要通过引用接受参数。将您的功能更改为:
function MyFunction($value, $row, $column, $grid, ..) ..
无论如何,对象值本质上是引用,通过引用传递它们并不会真正添加任何内容和/或可能不会按照您的想法执行任何操作。