| 单例模式也就是只能实例化一次,也就代表在实例化时不可能使用new关键字,下面是使用示例,大家参考使用吧 
 
 	  	<?php 	class EasyFramework_Easy_Mysql{ 	    protected static $_instance = null; 	    private function __construct(){ 	  	    } 	    public static function getInstance(){ 	        if (self::$_instance === null){ 	            self::$_instance = new self(); 	        } 	        return self::$_instance; 	    } 	  	    protected function __clone(){ 	  	    } 	  	} 	$x = EasyFramework_Easy_Mysql::getInstance(); 	var_dump($x); 	  	?> 	  	/* 	 * 1.第一步: 	 * 既然是单例,也就是只能实例化一次,也就代表在实例化时 	 * 不可能使用new关键字!!!! 	 * 在使用new关键字时,类中的构造函数将自动调用。 	 * 但是,如果我们将构造函数的访问控制符设置为protected或private 	 * 那么就不可能直接使用new关键字了!!! 	 * 第二步: 	 * 无论protected/private修饰的属性或方法,请问在当前类的 	 * 内部是否可以访问?---> 可以 	 * 第三步: 	 * 现在我们根本没有办法得到对象(因为你不能使用new关键字了), 	 * 第四步:静态成员(包括属性或方法)在访问时,只能通过 	 * 类名称::属性() 	 * 类名称::方法() 	 * 第五步:如果我现在存在一个静态方法--> getInstance() 	 * 那么在调用时就应写成 	 * $object = EasyFramework_Easy_Mysql::getInstance() 	 * 如果,getInstance()方法可以得到唯一的一个对象 	 * 也就代表是所谓的单例模式了!!! 	 * 第六步,怎么让getInstace()只得到一个对象呢? 	 * 既然要得到对象,那么肯定是: 	 * $variabl = new ????(); 	 * 我们又知道静态属性的值是可以所有的对象来继承的!!! 	 * 静态成员是属于类的,而非对象的! 	 * 所以: 	 * 第七步:声明一个静态的属性,用其存储实例化的对象 	 * protectd static $_instance 	 * 	 * 并且初始值为null 	 * 那么我在调用getInstance()方法时,只需要判断其值是否为空即可/ 	 * 	 * public static function getInstance(){ 	 *     if(self::_instance === null){ 	 *      self::_instance = new self(); 	 *  } 	 *  return self::_instance; 	 * } 	 * 在实例时,一定是这样写: 	 * $x = EasyFramework_Easy_Mysql::getInstance(); 	 * 在第一时调用时,类的$_instance这个静态属性值为null, 	 * 那么也就代表,getInstance()方法的判断条件为真了, 	 * 也就意味着 	 * self::$_instance这个成员有了值了!!! 	 * 并且还返回这个值 	 * $y = EasyFramework_Easy_Mysql::getInstance(); 	 * 在第二次或第N次调用时,self::$_instance已经有了值了 	 * 也就代表getInstance()方法的条件为假了!!! 	 * 也就代表其中的程序代表不可能执行了!!! 	 * 也就代表将直接返回以前的值了!!! 	 * 	 * 	 * 	 * */ 	  |