例如,我有一个班级
class MyClass
{
public $something = 'base';
public function __construct()
{
$something = 'construct';
}
public function __destruct()
{
$something = 'destruct';
}
public static doSomething()
{
$return = new MyClass;
echo $return->something;
}
}
所以,我的问题是这样的......在不实例化对象的情况下运行静态方法会运行构造函数吗?例如,如果我在构造函数中有数据库连接信息,我是否可以运行一个静态方法来返回一个显式实例化类的查询?
提前致谢
答案 0 :(得分:1)
是的,您的示例中将调用构造。既然你已经有了代码,我想它很容易测试。
答案 1 :(得分:0)
如果你执行MyClass :: doSomething(),它将创建MyClass的对象,当然,它的构造函数将被调用。为什么不运行它并查看结果?
答案 2 :(得分:0)
我缺乏PHP知识,但与其他OO语言相比,它当然会运行构造函数,因为你告诉静态方法创建一个新的MyClass实例。
如果您调用了新的SomeOtherType,则同样适用。代码本身并不关心它是否在静态/公共/私有方法中,只要new存在,就会调用构造函数。
答案 3 :(得分:0)
我没有正确地提出问题,但答案是,只要对象被实例化,即使在静态方法中,构造函数也会运行。输出将是构造函数中的任何内容,因为解构函数在最后一次调用类之后才会触发。
很抱歉问题混乱。