четверг, октября 05, 2006

PHP static class name solution

При разработке обобщенного кода, бывает необходимо узнать класс из статического метода.
т.е. если у нас есть классы BaseTag, ConcreteTag то необходимо чтобы при вызове ConcreteTag:find_all() в методе find_all() была возможность определить что метод вызван именно для класса ConcreteTag. В PHP нет такой возможности

предлагается использовать debug_backtrace() чтобы получить эту информацию


function get_class_static()
{
$bt = debug_backtrace();
// note that we are using $bt[1] instead of $bt[0];
//$bt[0] would return the get_class_static function rather than the calling class
$name = $bt[1]['class'];
return $name;
}

Source of Solution

Ярлыки: