Нестатический метод ... не должен вызываться статически
недавно я сделал обновление для PHP 5.4, и я получаю сообщение об ошибке статического и нестатического кода.
Это ошибка:
PHP Strict Standards: Non-static method VTimer::get()
should not be called statically in /home/jaco/public_html/include/function_smarty.php on line 371
это строка 371:
$timer = VTimer::get($options['magic']);
Я надеюсь, что кто-то может помочь.
2 ответов
это означает, что его следует называть так:
$timer = (new VTimer)->get($options['magic']);
разницу между static
и non-static
это то, что первый не нуждается в инициализации, поэтому вы можете вызвать classname
затем добавить ::
к нему и немедленно вызовите метод.
Вот так:
ClassName::method();
и если метод не статический, вам нужно инициализировать его следующим образом:
$var = new ClassName();
$var->method();
однако в PHP 5.4 вы можете использовать этот синтаксис вместо стенографии:
(new ClassName)->method();
вы также можете изменить метод на статический, например:
class Handler {
public static function helloWorld() {
echo "Hello world!";
}
}