Узнайте, существует ли метод в статическом классе

2 ответа

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()"
56
ответ дан 27 November 2019 в 07:10
поделиться

Обновление:

Ах, извинения. Я был временно слеп :) Вы захотите использовать магическую константу __CLASS __

, например

if (method_exists(__CLASS__, "test3")) { echo "Hi"; }
3
ответ дан 27 November 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: