首先了解一个概念
静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。
由单例模式可以延伸到内存分配 -- 栈、堆、静态区
//测试用例
$a = Single::getInstance();
$a->setTest('a');
$b = Single::getInstance();
print_r($a);
print_r($b);
$b->setTest('b');
print_r($a);
print_r($b);
//单例类
class Single{
// important!使用 static 存放静态区
private static $instance;
private $test;
private function __construct(){
}
public function setTest($test){
$this->test = $test;
}
public function getTest(){
return $this->test;
}
public static function getInstance(){
//instanceof 关键字
if(self::$instance instanceof self){
return self::$instance;
}else{
self::$instance = new self;
return self::$instance;
}
}
}