tz-lom
Продвинутый новичок
Собственно сабж , о существовании __METHOD__ я в курсе, но он превращается в строку ещё на этапе синтаксического анализа, а не в рантайме. Мне хочется что то аналогичное get_called_class() только для метода, чтобы делать например такие штуки:
но вот как реализовать get_called_method я не особенно представляю.
Есть конечно вариант через debug_backtrace , но получилось "слегка" медленно(даже с ограничением разворачивания стека).
ПоэтомуОт нефиг делать был накорябан патч реализующий эту операцию быстро.
Собственно вопрос в том можно ли это делать как то ещё, а если нет, то кто мог бы посмотреть патч на наличие в нём ошибок (зенд вижу в первый раз).
PHP:
class A {
public function get(){ return rand(0,100); }
public function get2(){ return rand(-100,0); }
public function get3(){ return rand(100,200); }
}
trait Cache {
public function cache(){
static $cache = NULL;
if($cache===NULL)
{
$cache = call_user_func_array(['parent',get_called_method()],func_get_args());
}
return $cache;
}
}
class B extends A {
use Cache { cache as get; cache as get2;}
}
$c = new B();
echo $c->get(),"\t",$c->get2(),"\t",$c->get3(),"\n";
echo $c->get(),"\t",$c->get2(),"\t",$c->get3(),"\n";
echo $c->get(),"\t",$c->get2(),"\t",$c->get3(),"\n";
Есть конечно вариант через debug_backtrace , но получилось "слегка" медленно(даже с ограничением разворачивания стека).
Собственно вопрос в том можно ли это делать как то ещё, а если нет, то кто мог бы посмотреть патч на наличие в нём ошибок (зенд вижу в первый раз).