class sigle {
protected static $ins = null;
public static function getIns() {
if( self :: $ins === null ) {
self :: $ins = new self();
}
return self :: $ins;
}
//方法前加上final,则方法不能被覆盖,类前加final,则类不能被继承(如果此类被继承,则不能实现单例的效果)
final protected function __construct() {
}
//封锁clone(如果此类对象被克隆,则不能实现单例的效果)
final protected function __clone() {
}
//克隆的另外一种写法
public function __clone() {
return self:: $ins;
}
}
$s1 = sigle :: getIns();
$s2 = sigle :: getIns();
if($s1 === $s2 ) {
echo "是相同的一个类";
}