call_user_func с $this в качестве параметра в 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 я получаю сообщение об ошибке "Параметр должен быть ссылкой, задано значение". Соответствующая ошибка относится к параметру $this в строке call_user_func. Кажется, что если я укажу $this непосредственно в вызове, это считается передачей по значению, потому что, если я сделаю так, это сработает:

$that = &$this;
$value = call_user_func("MyFunction", $value, $row, $that,etc....);

И я должен сделать это со всеми остальными параметрами, которые связаны с текущим объектом.

Вопрос: есть ли другой, более элегантный способ сделать это? Я что-то упускаю?


person Catalin    schedule 02.10.2014    source источник


Ответы (1)


Во-первых, вам не нужно принимать параметр по ссылке. Измените свою функцию на:

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

Значения объекта в любом случае являются ссылками по своей природе, передача их по ссылке на самом деле ничего не добавляет и/или может не делать того, что вы думаете.

person deceze♦    schedule 02.10.2014
comment
Верно! Я забыл об этом :) - person Catalin; 02.10.2014