Срабатывает статический вызов не статического метода, как так? Есть не статические методы - test1 и test2 При их статическом вызове они отрабатывают как статические, в чем подвох?class Test {
public function test(){ echo 'ты меня видишь'; } public function test2(){ echo 12; } } $d = Test::test1(); // выводит: ты меня видишь $a = Test::test2(); // выводит: 12
Подвох заключается в использовании статического метода для вызова не статического метода. В данном случае, при вызове статического метода test1() или test2(), PHP интерпретирует их как статические методы, хотя они в действительности не объявлены как статические.
Тем не менее, это работает из-за того, что PHP не строгий в этом отношении и позволяет вызывать не статические методы из статического контекста без ошибок. Однако, это считается плохой практикой и не следует полагаться на такое поведение, так как в будущих версиях PHP это может быть изменено.
Для правильного вызова не статического метода из статического контекста, рекомендуется создать экземпляр класса и вызывать методы через этот экземпляр, как показано ниже:
$class = new Test(); $class->test1(); $class->test2();
Таким образом, статический вызов не статического метода не является нормальной практикой и может привести к нежелательным последствиям в дальнейшем.
Подвох заключается в использовании статического метода для вызова не статического метода. В данном случае, при вызове статического метода test1() или test2(), PHP интерпретирует их как статические методы, хотя они в действительности не объявлены как статические.
Тем не менее, это работает из-за того, что PHP не строгий в этом отношении и позволяет вызывать не статические методы из статического контекста без ошибок. Однако, это считается плохой практикой и не следует полагаться на такое поведение, так как в будущих версиях PHP это может быть изменено.
Для правильного вызова не статического метода из статического контекста, рекомендуется создать экземпляр класса и вызывать методы через этот экземпляр, как показано ниже:
$class = new Test();$class->test1();
$class->test2();
Таким образом, статический вызов не статического метода не является нормальной практикой и может привести к нежелательным последствиям в дальнейшем.