例如,我有一个类
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,就会调用构造函数。
我没有正确地问这个问题,但答案是,只要对象被实例化,即使在静态方法中,构造函数也会运行。输出将是构造函数中的任何内容,因为解构器直到最后一次调用该类之后才启动。
很抱歉问题弄糊涂了。