Мне нужно вызвать динамическую функцию и отправить текущий объект в качестве ссылки в указанной функции.
В 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....);
И я должен сделать это со всеми другими параметрами, которые связаны с текущим объектом.
Вопрос: есть ли другой, более элегантный способ сделать это? Я что-то пропустил?
Вам не нужно принимать параметр по ссылке в первую очередь. Измените свою функцию на:
function MyFunction($value, $row, $column, $grid, ..) ..
Значения объекта в любом случае являются ссылками по своей природе, передача их по ссылке ничего не добавляет на самом деле и / или может не выполнять то, что вы думаете.
Других решений пока нет …