Ответ 1
get_called_class()
был представлен в PHP 5.3 и будет возвращать имя класса "Late Static Binding":
class myClass{
public static function test()
{
if(method_exists(get_called_class(), "test"))
{
echo get_called_class().'::test()';
}
}
}
class subClass extends myClass{}
subClass::test() // should print "subClass::test()"
Функция get_class()
, которая с php 5.0.0 не требует каких-либо параметров, если вызываемый внутри класса возвращает имя класс, в котором была объявлена функция (например, родительский класс):
class myClass{
public static function test()
{
if(method_exists(get_class(), "test"))
{
echo get_class().'::test()';
}
}
}
class subClass extends myClass{}
subClass::test() // prints "myClass::test()"
Магическая константа __CLASS__
делает то же самое [ссылка].
class myClass{
public static function test()
{
if(method_exists(__CLASS__, "test"))
{
echo __CLASS__.'::test()';
}
}
}
class subClass extends myClass{}
subClass::test() // prints "myClass::test()"