通过static关键字限制一个类最多只能创建出一个实例化对象
<?php
class Single {
private static $element = NULL;
private function __construct() {
echo "Hello World! ";
}
static function get() {
if(is_null(self::$element)) {
self::$element = new self();
echo 'I will never give up. ';
return self::$element;
}
}
}
$single = Single::get();
$double = Single::get();
核心在于static
是属于类而不是属于对象的,所以改变值会反应到类。设定初值为NULL
,在方法里赋值,而如果是NULL
,在方法里调用,赋为new self()
在外界就变成了$single = new Single()
,而$double
调用时什么都不会发生了,此时静态变量已经不是NULL
了不会进入判断体