我们经常采用如下方式定义单列:
class Singleton {
    private static $instance = NULL;
    /** 不容许直接调用构造函数 */
    private function __construct() {
    }
    /** 不容许深度复制 */
    private function __clone() {
    }
    public static function getInstance() {
        if (NULL === self::$instance) {
        	self::$instance = new self();
		}
        return self::$instance;
    }
}
很多人都会记得对深度copy的保护, 但, 其实我们却疏忽了一点...
with 15 Comments