从静态方法访问类字段

时间:2012-07-11 05:54:17

标签: php oop static-methods

例如,我有一个班级

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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

很抱歉问题混乱。