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

недавно я сделал обновление для 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!";
    }
}