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简介
Oct 09 PHP
php下检测字符串是否是utf8编码的代码
Jun 28 PHP
深入php之规范编程命名小结
May 15 PHP
php统计文章排行示例
Mar 04 PHP
PHP中使用正则表达式提取中文实现笔记
Jan 20 PHP
php在apache环境下实现gzip配置方法
Apr 02 PHP
php通过获取头信息判断图片类型的方法
Jun 26 PHP
PHP图片添加水印功能示例小结
Oct 03 PHP
使用正则去除php代码中的注释方法
Nov 03 PHP
PHP观察者模式示例【Laravel框架中有用到】
Jun 15 PHP
php微信公众号开发之秒杀
Oct 20 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
May 29 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
基于文本的访客签到簿
2006/10/09 PHP
PHP面向对象编程快速入门
2006/12/14 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
php将gd生成的图片缓存到memcache的小例子
2013/06/05 PHP
WordPress中is_singular()函数简介
2015/02/05 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
2018/02/23 PHP
PHP实现的分解质因数操作示例
2018/08/01 PHP
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
AngularJS快速入门
2015/04/02 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
jQuery实现三级联动效果
2017/03/02 Javascript
js+canvas实现动态吃豆人效果
2017/03/22 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
Vuejs 单文件组件实例详解
2018/02/09 Javascript
Vue-cli配置打包文件本地使用的教程图解
2018/08/02 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
[05:13]2018DOTA2亚洲邀请赛主赛事第二日战况回顾 LGD、VG双雄携手晋级
2018/04/05 DOTA
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
Python中zip()函数用法实例教程
2014/07/31 Python
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
Python实现FTP文件传输的实例
2019/07/07 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
Python 单例设计模式用法实例分析
2019/09/23 Python
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
UNIX命令速查表
2012/03/10 面试题
工程造价专业大专生求职信
2013/10/06 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
JS的深浅复制详细
2021/10/16 Javascript
Windows11里微软已经将驱动程序安装位置A盘删除
2021/11/21 数码科技