Php 非静态方法。。。。。不应静态调用

Php 非静态方法。。。。。不应静态调用,php,static,non-static,Php,Static,Non Static,我最近对PHP5.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']);

我最近对PHP5.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']);

我希望有人能帮忙。

这意味着它应该被称为:

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

静态
非静态
之间的区别在于,第一个不需要初始化,因此您可以调用
类名
,然后将
附加到它并立即调用该方法。 像这样:

ClassName::method();
如果该方法不是静态的,则需要像这样初始化它:

$var = new ClassName();
$var->method();
但是,在PHP 5.4中,您可以使用以下语法作为速记:

(new ClassName)->method();

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

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

最优雅的方式是:

(new ClassName)->method();
您还可以将函数转换为
静态函数调用(){}
,但这取决于您的函数以及您对它所做的操作


如果您需要实例化一个类,那么请避免这样做,将静态函数视为常量,它们不能有对象,并且需要预定义的变量。

我用这种方法解决了这个问题

error_reporting('E_NONE');// add this in the pdf dwonload function
$this->load->library('mpdf/mpdf');

这应该会有帮助。

欢迎使用堆栈溢出。你应该选择一个用户名。我建议
新手嗜好PHP Boy
。谢谢你,这对我来说是个好名字,Sergiu;)或者他应该将该方法更改为静态(因为这是一个在升级的PHP环境中运行的现有代码库)。@mamdouh您太棒了,错误消失了。谢谢你的帮助。祝你晚上愉快。真诚地Jaco@user2938848-不客气。我希望您将答案标记为已接受,因为它与您一起工作:)通过更快地调用:(new ClassName)->method();你是说速记。对吗?我确信语法就是目的。剪切错误报告不是解决方案,它只是隐藏了问题。。。