直接上代码;
<?phpclass 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设计模式之单例模式
原文地址:https://www.cnblogs.com/phpcurd/p/8506417.html