Получение "__callStati c не вызывается", как я могу вызвать stati c? - PullRequest
0 голосов
/ 17 января 2020

Код:

class m
{
  public static function __callStatic($name, $arguments)
  {
      echo "Calling static method '$name' "
           . implode(', ', $arguments). "\n";
  }
}

class MethodTest extends m
{
    public function __call($name, $arguments)
    {
        echo "Calling object method '$name' "
             . implode(', ', $arguments). "\n";
    }
}

class MethodTest2 extends m
{
    public function index()
    {
      MethodTest::test();
    }


}
call_user_func(['MethodTest2','index']);

Ошибка:

Строгие стандарты: call_user_fun c () ожидает, что параметр 1 является допустимым обратным вызовом, не статично c метод MethodTest2 :: index () не должен вызываться статически в / var / www/html/api/index.php в строке 45 Вызов stati c метод 'test'

1 Ответ

0 голосов
/ 17 января 2020

Вы должны проверить это: перегрузка

Методы перегрузки вызываются при взаимодействии со свойствами или методами, которые не были объявлены или являются не отображается в текущей области .

__callStatic() запускается при вызове недоступных методов в состоянии c контекста .

Вы вызываете не стати c метод статически , метод уже был объявлен , но не stati c в текущей области.

__callStatic работает только для методы еще не определены .

Так что, если вы попробуете это будет работать:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...