REANIMATOR
27.02.2009 - 22:10
Доброе время суток.
Подскажите, как можно реализовать call_user_func() относительно объекта?
Имеем класс
PHP |
class myClass { function index() { //do something } }
$handle = new myClass(); $handle->call_user_func() // тут гвоздь... |
я думал передать имя функции в отдельную функцию analizer и чтобы она вызывала. например так
PHP |
class myClass { function analizer($func_name) { if(function_exist($func_name)) { call_user_func($func_name); }
}
function index() { //do something } }
$handle = new myClass(); $handle->analizer("index"); |
но увы там тоже нужно както обратится через $this...
Подскажите, может кто сталкивался.
Спустя 8 минут, 1 секунда (27.02.2009 - 21:18) kirik написал(а):
Если я правильно понял вопрос..
Вся "внешняя" работа с классами производится через массив:
PHP |
$class = 'myClass'; $func = 'index'; call_user_func(array($class, $func)); |
Спустя 15 минут, 57 секунд (27.02.2009 - 21:34) REANIMATOR написал(а):
kirik 
да, спасибо...
а если внутри класса, как можно обратится?
как тут if(function_exist($func_name))
с массивом не работает
Спустя 41 минута, 30 секунд (27.02.2009 - 22:15) kirik написал(а):
Цитата (REANIMATOR @ 27.02.2009 - 13:34) |
а если внутри класса, как можно обратится? |
Тогда тебе нужно юзать не
function_exists(), а
method_exists()
Спустя 27 минут, 4 секунды (27.02.2009 - 22:42) REANIMATOR написал(а):
kirik
хех. как всё просто получается... спасибо помог =)
Спустя 1 час, 55 минут, 10 секунд (28.02.2009 - 00:38) REANIMATOR написал(а):
ещё вопросик...
вот есть такая замечательная
функция call_user_func()
зачем её использовать, если можно просто использовать такой вариант?
PHP |
$test = "hi"; function hi() { echo "hello"; } $test(); |
есть ли разница, кроме того что call_user_func() возвращает индикацию?
Спустя 39 минут, 7 секунд (28.02.2009 - 01:17) kirik написал(а):
Цитата (REANIMATOR @ 27.02.2009 - 16:38) |
есть ли разница |
Впринципе разницы никакой.
ИМХО
call_user_func() делает код немного более читабельным