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