Нестатический метод..... не следует называть статическим

Недавно я сделал обновление для 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']);

Я надеюсь, что кто-то может помочь.

Ответы

Ответ 1

Это означает, что он должен называться как:

$timer = (new VTimer)->get($options['magic']);

разница между static и non-static заключается в том, что первая не нуждается в инициализации, поэтому вы можете вызвать classname, а затем добавить :: к ней и сразу вызвать метод. так:

ClassName::method();

и если метод не является статичным, вам необходимо инициализировать его следующим образом:

$var = new ClassNmae();
$var->method();

Однако в PHP 5.4 вы можете использовать этот синтаксис вместо быстрого вызова:

(new ClassName)->method();

Ответ 2

Вы также можете изменить метод как статический:

class Handler {
    public static function helloWorld() {
        echo "Hello world!";
    }
}