Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   call_user_func (https://javascript.ru/forum/server/27136-call_user_func.html)

kilogram 03.04.2012 21:09

call_user_func
 
Вот попробовал использовать эту функцию
Код:

<html><body>
<?php
function privet($a,$b){
echo $a,' ',$b;
}
call_user_func('privet',5,8);
?>
</body></html>

тоже самое можно написать и так без неё,даже короче выходит:
Код:

<html><body>
<?php
function privet($a,$b){
echo $a,' ',$b;
}
privet(5,8);
?>
</body></html>

Зачем тогда она?

T-sh 03.04.2012 21:32

,для того, чтоб вызвать функцию, зная её имя :))

простой пример:

есть 5 функций:
function Vasya($a,$b){...}
function Petya($a,$b){...}
function Kolya($a,$b){...}
function Misha($a,$b){...}
function Katya($a,$b){...}


и в зависимости от переданного значения (скажем, из формы в $funcName), нужно вызвать одну из них..

чтобы не делать кучу условий, можно просто вызвать:
call_user_func($funcName);

melky 03.04.2012 23:31

это на этом держится API плагинов к CMS : так реализуются функции обратного вызова.

micscr 05.04.2012 08:55

хуки в друпал так работают.
Пробегается по списку включенных модулей и если есть вызываются функции в модулях. Юзают call_user_func_array

melky 05.04.2012 10:04

Цитата:

Сообщение от micscr (Сообщение 167205)
хуки в друпал так работают.
Пробегается по списку включенных модулей и если есть вызываются функции в модулях. Юзают call_user_func_array

в php нельзя передавать функции напрямую ?

add_hook('header', function() { .... });

micscr 05.04.2012 10:31

только в php 5.3 появились анонимные функции.


Часовой пояс GMT +3, время: 17:25.