【问题标题】:PHP Construct with Static Variable带静态变量的 PHP 构造
【发布时间】: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


【解决方案1】:

它不会返回“Dummy Text”,因为构造函数从未被执行。构造函数只在类的新实例上执行。

$foo =  new DummyStatic();
echo DummyStatic::text();

然而,这会打印出“虚拟文本”

【讨论】:

  • 正是我需要的正确简化答案。谢谢斯塔!
猜你喜欢
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 2016-06-23
  • 1970-01-01
  • 2010-12-11
  • 2021-07-06
  • 1970-01-01
相关资源
最近更新 更多