【发布时间】:2016-02-28 23:12:00
【问题描述】:
我在这里绞尽脑汁。就在我认为自己理解某事的时候,事实证明我错了。
我的问题涉及使用静态方法、静态变量和 __construct 魔术方法。我们来看这个例子
<?php
class DummyStatic
{
public static $variable;
public function __construct()
{
self::$variable = 'Dummy Text';
}
public static function text()
{
return self::$variable;
}
}
$dummyText = DummyStatic::text();
?>
我假设当我调用DummyStatic::text(); 时,它会返回Dummy Text。
我在另一个项目中使用 MVC,类似的事情正在成功地完成,但为什么它不能单独工作,这让我发疯了。
有什么想法吗?
提前谢谢你。
【问题讨论】:
-
不要在构造函数中初始化静态变量。构造函数用于初始化新对象,类上应该有一个静态属性(无需调用任何构造函数)。
-
@CarlGroner 感谢您的评论。但我不明白你为什么说
Don't initialize static variables in the constructor...看起来它有时会非常有益。你能解释一下吗? -
我想如果您不希望在创建类的对象之前该值可用,这是有益的,但我无法想象很多情况。即使您希望构造函数修改值,显式初始值也会更好 IMO。
-
@CarlGroner 我明白你的意思。如果需要,我很高兴至少知道如何使用它。
标签: php oop constructor static