源码网,源码论坛,源码之家,商业源码,游戏源码下载,discuz插件,棋牌源码下载,精品源码论坛

 找回密码
 立即注册
楼主: ttx9n

[PHP编程] php设计模式之单例模式使用示例

[复制链接]

7万

主题

861

回帖

32万

积分

论坛元老

Rank: 8Rank: 8

积分
329525
发表于 2014-1-20 15:56:33 | 显示全部楼层 |阅读模式
单例模式也就是只能实例化一次,也就代表在实例化时不可能使用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()方法的条件为假了!!!
 * 也就代表其中的程序代表不可能执行了!!!
 * 也就代表将直接返回以前的值了!!!
 *
 *
 *
 * */

回复

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2022-9-17 10:37:21 | 显示全部楼层
看看怎么样再说
回复 支持 反对

使用道具 举报

3

主题

2万

回帖

172

积分

注册会员

Rank: 2

积分
172
发表于 2022-12-1 20:45:51 | 显示全部楼层
论坛有你更精彩!
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2022-12-10 04:57:15 | 显示全部楼层
。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

2

主题

2万

回帖

499

积分

中级会员

Rank: 3Rank: 3

积分
499
发表于 2023-1-14 07:52:24 | 显示全部楼层
这个源码不错啊
回复 支持 反对

使用道具 举报

9

主题

2万

回帖

420

积分

中级会员

Rank: 3Rank: 3

积分
420
发表于 2023-1-31 00:04:28 | 显示全部楼层
。。。。。。。。。。。。。。。
回复 支持 反对

使用道具 举报

0

主题

1万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-3-26 06:23:16 | 显示全部楼层
dfdsafdsfdsfdsf
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-8-12 01:30:49 | 显示全部楼层
刷屏刷屏刷屏
回复 支持 反对

使用道具 举报

0

主题

2万

回帖

0

积分

中级会员

Rank: 3Rank: 3

积分
0
发表于 2023-8-29 18:16:01 | 显示全部楼层
额风风风微风微风违法
回复 支持 反对

使用道具 举报

11

主题

2万

回帖

300

积分

中级会员

Rank: 3Rank: 3

积分
300
发表于 2023-9-1 15:06:47 | 显示全部楼层
的沙发水电费水电费
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

手机版|小黑屋|网站地图|源码论坛 ( 海外版 )

GMT+8, 2025-2-3 07:09 , Processed in 0.115907 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表