Hanselman имел действительно интересный подкаст со слепым разработчиком недавно .
static :: class
доступен, начиная с PHP 5.5, и будет возвращать имя класса « Late Static Binding »:
class myClass {
public static function test()
{
echo static::class.'::test()';
}
}
class subClass extends myClass {}
subClass::test() // should print "subClass::test()"
get_called_class ()
делает то же самое и было введено в PHP 5.3
class myClass {
public static function 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()
{
echo get_class().'::test()';
}
}
class subClass extends myClass {}
subClass::test() // prints "myClass::test()"
Магическая константа __ CLASS __
делает то же самое [ ссылка ].
class myClass {
public static function test()
{
echo __CLASS__.'::test()';
}
}
class subClass extends myClass {}
subClass::test() // prints "myClass::test()"
Ах, извинения. Я был временно слеп :) Вы захотите использовать магическую константу __CLASS __
, например
if (method_exists(__CLASS__, "test3")) { echo "Hi"; }