非静态方法.....不应静态调用

2022-08-30 09:19:40

我最近更新了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']);

和 之间的区别在于,第一个不需要实例化,因此您可以调用 then append 到它并立即调用该方法。这样:staticnon-staticclassname::

ClassName::method();

如果该方法不是静态的,则需要像这样对其进行初始化:

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

但是,在 PHP >=5.4 中,您可以使用以下语法作为速记:

(new ClassName)->method();

答案 2

您还可以将方法更改为静态方法,如下所示:

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

推荐