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做的端口嗅探器--可以指定网站和端口
Oct 09 PHP
经典的PHPer为什么被认为是草根?
Apr 02 PHP
一些使用频率比较高的php函数
Oct 03 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
Nov 01 PHP
php mysql_real_escape_string函数用法与实例教程
Sep 30 PHP
ecshop实现smtp发送邮件
Feb 03 PHP
PHP实现链式操作的核心思想
Jun 23 PHP
php删除数组指定元素实现代码
May 03 PHP
PHP高精确度运算BC函数库实例详解
Aug 15 PHP
PHP中的self关键字详解
Jun 23 PHP
PHP 8新特性简介
Aug 18 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
2020年4月放送!《Princess Connect Re:Dive》制作组 & 角色声优公开!
2020/03/06 日漫
PHP实现的mongoDB数据库操作类完整实例
2018/04/10 PHP
浅谈PHP匿名函数和闭包
2019/03/08 PHP
用js实现的仿sohu博客更换页面风格(简单版)
2007/03/22 Javascript
js 覆盖和重载 函数
2009/09/25 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
初探nodeJS
2017/01/24 NodeJs
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
JS装饰器函数用法总结
2018/04/21 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
微信小程序实现页面浮动导航
2020/01/08 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
python实现的一个p2p文件传输实例
2014/06/04 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
详解Python中的Descriptor描述符类
2016/06/14 Python
利用python实现数据分析
2017/01/11 Python
解决pycharm界面不能显示中文的问题
2018/05/23 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
毕业自荐书
2013/12/09 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
面试必备的求职信
2014/05/25 职场文书
单位工资证明范本
2015/06/12 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
Redis RDB技术底层原理详解
2021/09/04 Redis
python百行代码实现汉服圈图片爬取
2021/11/23 Python
maven依赖的version声明控制方式
2022/01/18 Java/Android
青岛市的收音机研制与生产
2022/04/07 无线电