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

21 Авг 2019 в 07:07
247 +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 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 541 автору
Первые отклики появятся уже в течение 10 минут
Прямой эфир