从静态方法访问类字段


Access a class field from static method

例如,我有一个类

class MyClass
{
    public $something = 'base';
    public function __construct()
    {
        $something = 'construct';
    }
    public function __destruct()
    {
        $something = 'destruct';
    }
    public static doSomething()
    {
        $return = new MyClass;
        echo $return->something;
    }
}

所以,我的问题是。。。在不实例化对象的情况下运行静态方法会运行构造函数吗?例如,如果我在构造函数中有数据库连接信息,我是否可以运行一个静态方法,在显式实例化类的过程中返回查询?

提前感谢

是的,将在您的示例中调用构造。既然你已经有了代码,我想测试起来会很容易。

如果执行MyClass::doSomething(),它将创建MyClass的对象,当然,它的构造函数也将被调用。为什么不运行它并查看结果?

我缺乏PHP知识,但与其他OO语言相比,它当然会运行构造函数,因为你告诉静态方法创建MyClass的新实例。

如果您调用了一个新的SomeOtherType,也同样适用。代码本身并不关心它是否在静态/公共/私有方法中,只要有new,就会调用构造函数。

我没有正确地问这个问题,但答案是,只要对象被实例化,即使在静态方法中,构造函数也会运行。输出将是构造函数中的任何内容,因为解构器直到最后一次调用该类之后才启动。

很抱歉问题弄糊涂了。