среда, 30 ноября 2011 г.

Особенности вызова функций с передачей по ссылке

Как известно, при насильной передаче аргумента по ссылке в функцию, которая ожидает передачи по значению, пыха ругается (если в php.ini allow_call_time_pass_reference = off)..

[mechanic@mechanic trunk]$ php -r ' function a($inp) { echo $inp; } $b = "123"; a(&$b);'
Warning: Call-time pass-by-reference has been deprecated; If you would like to pass it by reference, modify the declaration of a().  If you would like to enable call-time pass-by-reference, you can set allow_call_time_pass_reference to true in your INI file in Command line code on line 1
123

однако любопытно, что тот же вызов, выполненный ректально через call_user_func_array() такого не дает 
[mechanic@mechanic trunk]$ php -r ' function a($inp) { echo $inp; } $b = "123"; call_user_func_array("a", array(&$b));'
123


Комментариев нет:

Отправить комментарий