php 单例模式笔记
<?php /** * 单例模式
1. 它们必须拥有一个构造函数,并且必须被标记为private
2. 它们拥有一个保存类的实例的静态成员变量
3. 它们拥有一个访问这个实例的公共的静态方法
单例类不能再其它类中直接实例化,只能被其自身实例化。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。 */ class Dog { static public $_instance;//声明一个静态变量(保存在类中唯一的一个实例) private $_name; /** * 建立私有的构造方法,防止直接使用new */ private function __construct() { //初始化操作 echo "当执行 new self()时候 仅仅执行一次<br/>"; }
//私有化克隆方法
private function __clone(){
} //声明一个getinstance()静态方法,用于检测是否有实例对象 static public function getinstance(){ //如果实例不存在生成实例 if(!self::$_instance){ self::$_instance = new self(); } return self::$_instance; } //赋值实例名 public function setname($name){ $this->_name = $name; } //获取实例的名 public function getname(){ return $this->_name; } } $oneDog=Dog::getinstance(); $twoDog=Dog::getinstance(); $oneDog->setname('比特'); echo $twoDog->getname(); $twoDog->setname('中华田园'); echo "<br/>"; echo $oneDog->getname(); //new Dog(); Fatal error: Call to private Dog::__construct() from invalid context

更多精彩