直接上代码;
<?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 "不是同一个实例"; }
为什么要用静态成员属性储存实例呢?
因为只有第一次实例化的时候才赋值、以后都直接给出静态实例。