call_user_func,其中$ this作为php 5.4中的参数

时间:2014-10-02 08:23:05

标签: php oop php-5.4

我需要调用一个动态函数并将当前对象作为参考发送到所述函数中。

在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....);

我必须使用与当前对象相关的所有其他参数。

问题:还有其他更优雅的方法吗?我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

您首先不需要通过引用接受参数。将您的功能更改为:

function MyFunction($value, $row, $column, $grid, ..) ..

无论如何,对象值本质上是引用,通过引用传递它们并不会真正添加任何内容和/或可能不会按照您的想法执行任何操作。