单例模式也就是只能实例化一次,也就代表在实例化时不可能使用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()方法的条件为假了!!!
 * 也就代表其中的程序代表不可能执行了!!!
 * 也就代表将直接返回以前的值了!!!
 *
 *
 *
 * */

最新文章

  1. MySQL使用if判断
  2. ORA-12519, ORA-00020异常产生原因及解决方案
  3. WPF学习之路(十)实例:用户注册
  4. &lt;欧奈尔制胜法则—如何在股市中赚钱&gt;读书笔记
  5. spark-DataFrame之RDD和DataFrame之间的转换
  6. C\C++编程中:相对路径+绝对路径
  7. 坑爹火狐浏览器会记录表单数据,导致服务器控件点击事件出bug
  8. Java基础知识强化42:StringBuffer类之StringBuffer的截取功能
  9. MVVM架构~knockoutjs系列之表单添加(验证)与列表操作源码开放
  10. JS之clientX,clientY,screenX,screenY,offsetX,offsetY区别
  11. SQL语句汇总(三)——聚合函数、分组、子查询及组合查询
  12. TML 打印预览问题,怎么设置有些内容不出现在打印预览页面上。怎么控制,有下代码 看得不是很懂 求解释
  13. [BZOJ1776][Usaco2010 Hol]cowpol 奶牛政坛
  14. TeamWork#3,Week5,Scrum Meeting 11.9
  15. 二分查找(等于x,小于x,小于等于x,大于x,大于等于x )
  16. PotPlayer 所有版本合集
  17. 并发编程&gt;&gt;线程池的实现(四)
  18. 多例模式,保证实例的唯一性,仅适用于form窗体
  19. Centos7.2 FastDFS_V5.05 集群的安装与配置1
  20. 0.5px的边框

热门文章

  1. 关于STM32的FLASH操作【转载】
  2. WM_MOUSELEAVE和WM_MOUSEHOVER使用
  3. 黄聪:css3实现图片划过一束光闪过效果(图片光影掠过效果)
  4. Bower 自定义组件文件夹名称
  5. Spring IoC容器总结(未完)
  6. Cassandra 介绍
  7. centos 安装 python2.7 运行webpy 项目
  8. java.lang.ArrayIndexOutOfBoundsException: 1
  9. Python基础篇【第3篇】: Python正则表达式
  10. test spring in category