<?php
/**
* 单例模式
* 1. 它必须拥有一个构造函数,并且必须被标记为private,让类在外界无法构造对象
* 2. 它们拥有一个保存类的实例的静态成员变量
* 3. 它们拥有一个访问这个实例的公共的静态方法
* 单例类不能再其它类中直接实例化,只能被其自身实例化。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用
*/
class Single {
private static $instance;
private $name;
private function __construct(){
}
private function __clone(){
}
public static function getInstance(){
if(empty(self::$instance)){
self::$instance = new self();
}
return self::$instance;
}
public function getName(){
return $this->name;
}
public function setName($name){
$this->name = $name;
}
}
$p1 = Single::getInstance();
$p2 = Single::getInstance();
$p1->setName("tom");
echo $p2->getName();
?>