加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中的静态实例

发布时间:2020-12-13 22:07:58 所属栏目:PHP教程 来源:网络整理
导读:为什么以下代码打
为什么以下代码打印“1,1,1”而不是“4,5,6”?

class MyClass {
  // singleton instance
  private static $instance = 3;

  function __construct() {
 $instance++;
 echo $instance . ",";
  }
}

for($i = 0; $i < 3; $i++) {
 $obj = new MyClass();
}

解决方法

$instance是局部变量,而不是静态类属性.与Java不同,您始终必须访问该范围内的变量或属性

$var; // local variable
$this->var; // object property
self::$var; // class property

我刚看到

// singleton instance

单例模式通常实现不同

class SingletonClass {
    protected $instance = null;
    protected $var = 3;
    protected __construct () {}
    protected __clone() {}
    public static function getInstance () {
        if (is_null(self::$instance)) { self::$instance = new self(); }
        return self::$instance;
    }
    public function doSomething () {
        $this->var++;
        echo $this->var;
    }
}
$a = SingletonClass::getInstance();
$a->doSomething();

单例模式确保您始终只与一个类的实例进行交互.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读