码迷,mamicode.com
首页 > Web开发 > 详细

PHP设计模式之单例模式

时间:2018-03-04 22:12:09      阅读:232      评论:0      收藏:0      [点我收藏+]

标签:private   静态成员   调用   ati   静态   ==   static   构造   cas   

直接上代码;

<?php

class Singlecase
{
  // 声明私有变量
  private $name;
  // 声明静态变量
  public static $interest;
  // 声明私有的构造函数防止外部实例化
  private function __construct ()
  {
    // code...
  }

  // 外部调用入口(静态方法)
  public static function enterance ()
  {
    // 判断 $interest 是否有值
    if (!self::$interest) self::$interest = new Singlecase();
    // 返回当前对象
    return self::$interest;
  }

  // 单例模式测试方法,判断是否能成功调用内部方法
  public function setname ($n)
  {
    $this->name = $n;
  }

  public function getname ()
  {
    return $this->name;
  }

}

// 直接走后门调用静态方法
$a = Singlecase::enterance();
// 给setname函数传值
$a->setname("单例模式完成啦");
echo $a->getname();
$b = Singlecase::enterance();

if ($a == $b) {
  echo "</br>是同一个实例";
} else {
  echo "不是同一个实例";
}

为什么要用静态成员属性储存实例呢?

因为只有第一次实例化的时候才赋值、以后都直接给出静态实例。

PHP设计模式之单例模式

标签:private   静态成员   调用   ati   静态   ==   static   构造   cas   

原文地址:https://www.cnblogs.com/phpcurd/p/8506417.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!