php设计模式之单例模式使用示例


Posted in PHP onJanuary 20, 2014

以下为单例模式代码:

<?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()方法的条件为假了!!!
 * 也就代表其中的程序代表不可能执行了!!!
 * 也就代表将直接返回以前的值了!!!
 *
 *
 *
 * */
PHP 相关文章推荐
php下防止单引号,双引号在接受页面转义的设置方法
Sep 25 PHP
PHP下对字符串的递增运算代码
Aug 21 PHP
PHP获取文件绝对路径的代码(上一级目录)
May 29 PHP
PHP 获取远程网页内容的代码(fopen,curl已测)
Jun 06 PHP
php calender(日历)二个版本代码示例(解决2038问题)
Dec 24 PHP
PHP的password_hash()使用实例
Mar 17 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
php实现发送微信模板消息的方法
Mar 07 PHP
百度工程师讲PHP函数的实现原理及性能分析(一)
May 13 PHP
百度工程师讲PHP函数的实现原理及性能分析(三)
May 13 PHP
php pthreads多线程的安装与使用
Jan 19 PHP
php实现基于openssl的加密解密方法
Sep 30 PHP
php实现图形显示Ip地址的代码及注释
Jan 20 #PHP
php判断手机访问还是电脑访问示例分享
Jan 20 #PHP
利用中国天气预报接口实现简单天气预报
Jan 20 #PHP
php日历制作代码分享
Jan 20 #PHP
php使用qr生成二维码的示例分享
Jan 20 #PHP
php利用新浪接口查询ip获取地理位置示例
Jan 20 #PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 #PHP
You might like
谈谈PHP语法(5)
2006/10/09 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
PHP微信分享开发详解
2017/01/14 PHP
php PDO判断连接是否可用的实现方法
2017/04/03 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
JS实现按比例缩放图片的方法(附C#版代码)
2015/12/08 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
EditPlus中的正则表达式 实战(4)
2016/12/15 Javascript
详谈JavaScript的闭包及应用
2017/01/17 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
JavaScript屏蔽Backspace键的实现代码
2017/11/02 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
WebPack工具运行原理及入门教程
2020/12/02 Javascript
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
Pycharm设置utf-8自动显示方法
2019/01/17 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
基于Python实现人脸自动戴口罩系统
2020/02/06 Python
Python Selenium实现无可视化界面过程解析
2020/08/25 Python
PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc)的步骤详解
2020/11/02 Python
信息管理员岗位职责
2013/12/01 职场文书
员工培训邀请函
2014/02/02 职场文书
给校长的建议书300字
2014/05/16 职场文书
政工例会汇报材料
2014/08/26 职场文书
大学生档案自我鉴定(2篇)
2014/10/14 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
毕业欢送会致辞
2015/07/29 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书