<?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

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。