加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP 单例模式实现

发布时间:2020-05-25 07:45:06 所属栏目:PHP 来源:互联网
导读:PHP 单例模式实现

下面是脚本之家 jb51.cc 通过网络收集整理的代码片段。

脚本之家小编现在分享给大家,也给大家做个参考。

<?php
/**
 *
 * User: jifei
 * Date: 2013-07-31
 * Time: 23:19
 */
/**
 * Class Singleton
 * 单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在,
 * 充分体现了 DRY(Don't Repeat Yourself)的思想。
 *
 * 实现单例模式的思路是:一个类能返回对象一个引用(永远是同一个)和一个获得该实例的方法(必须是静态方法,通常使用getInstance这个名称);
 * 当我们调用这个方法时,如果类持有的引用不为空就返回这个引用,如果类保持的引用为空就创建该类的实例并将实例的引用赋予该类保持的引用;
 * 同时我们还将该类的构造函数定义为私有方法,这样其他处的代码就无法通过调用该类的构造函数来实例化该类的对象,只有通过该类提供的静态方法来得到该类的唯一实例。
 *
 * 应用场景:适用于一个类只有一个实例的场景。数据库连接,日志记录,购物车
 * 缺点:PHP运行是页面级别的,无法直接实现跨页面的内存数据共享。
 */
class Singleton
{
    //保存类实例的私有的静态成员变量
    private static $_instance;
    //私有的构造方法
    private function __construct()
    {
        echo 'This is a Constructed method;';
    }
    //创建一个空的私有__clone方法防止对象被克隆
    private function __clone()
    {
    }
    //单例方法,用于获取唯一的实例对象
    public static function getInstance()
    {
        if (!(self::$_instance instanceof self)) {
            //instanceof用于检测对象与类的从属关系,is_subclass_of对象所属类是否类的子类
            self::$_instance = new self();
        }
        return self::$_instance;
    }
    //测试
    public function test()
    {
        echo 123;
    }
}
$a = Singleton::getInstance();
$a->test();
echo PHP_EOL;
$b = Singleton::getInstance(); //第二次调用时不执行构造方法
$b->test();
echo PHP_EOL;
//$c=new Singleton();由于构造方法私有,这个会报错的
//$d=clone $a;克隆对象报错

以上是脚本之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读