Как отличить статический метод от не статического? Есть класс с методом:public function myMethod() {
// do something
}
Метод не статический, но при обращении к нему: ClassName::myMethod() он выполнится, точнее PHP не даст ошибку при обращении, а даст ее позже, когда найдет допустим $this в реализации метода или что то еще чего не может быть в статическом методе. То есть PHP не различает не статический метод от статического.
Проблема обнаружилась когда стало необходимо использование метода __callStatic(). Необходимо обработать момент когда обращаются к несуществующему статическому методу, но при этом в классе вполне может быть не статический метод с тем же именем.
Может быть отключена какая либо настройка в PHP ?

21 Авг 2019 в 07:07
453 +1
0
Ответы
1

Нет, в PHP нельзя отключить различие между статическими и нестатическими методами. Однако, можно проверить является ли метод статическим или нет используя ключевое слово "static", например:

class ClassName {
public function myMethod(){
// do something
}
public static function myStaticMethod(){
// do something
}
}
$reflectionMethod = new ReflectionMethod('ClassName', 'myMethod');
var_dump($reflectionMethod->isStatic()); // false
$reflectionStaticMethod = new ReflectionMethod('ClassName', 'myStaticMethod');
var_dump($reflectionStaticMethod->isStatic()); // true

Используя ReflectionMethod можно определить является ли метод статическим или нет.

20 Апр 2024 в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир