PHP用静态方式调用非静态函数

时间:2015-01-30 09:34:21

标签: php

当我们用静态方式调用非静态函数时会发生什么? 像这样:

class test
{
    public function hello()
    {
        return "say hello";
    }
}

class foo
{
    public function __construct()
    {
        echo test::hello();
    }
}

$foo = new foo();

2 个答案:

答案 0 :(得分:1)

您将获得Strict standards: Non-static method test::hello() should not be called statically

你的班级宣言不好,正确的方法就是这个

class test
{
    public function hello()
    {
        return "say hello";
    }
}

class foo
{
    public function __construct()
    {
        echo test::hello();
    }
}

$foo = new foo();

Laravel使用Facade来表示您使用的是static方法,您也可以使用Facade来调用test::hello();等方法

Here is a good read on Facade

答案 1 :(得分:0)

快速回答:你得到严格的警告。

更多细节:如果在调用的函数中使用变量$ this,则引用调用函数的对象,而不是包含函数本身的类。

  

严格的标准:不应该调用非静态方法hello   静态地,假设来自不兼容的上下文的$ this