0

例如,我有一堂课

class MyClass
{
    public $something = 'base';

    public function __construct()
    {
        $something = 'construct';
    }

    public function __destruct()
    {
        $something = 'destruct';
    }

    public static doSomething()
    {
        $return = new MyClass;
        echo $return->something;
    }
}

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

提前致谢

4

4 回答 4

1

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

于 2012-07-11T06:00:00.040 回答
0

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

于 2012-07-11T06:00:10.763 回答
0

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

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

于 2012-07-11T06:02:10.267 回答
0

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

很抱歉问题中的混乱。

于 2012-07-31T06:50:34.543 回答