前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP 单例模式是干什么的?

PHP 单例模式是干什么的?

作者头像
Alone88
发布2019-10-22 17:28:33
4750
发布2019-10-22 17:28:33
举报
文章被收录于专栏:Alone88Alone88

php

PHP 单例模式

就是一个类只能实例化一次,如果有一个config配置文件,然后实例化多次的话, 在运行过程中修改了配置的话,就不知道哪个配置中进行了修改。 这样使用单例模式的话就避免了这个情况发生

代码

代码语言:javascript
复制
class Site{

    //属性
    public $siteName;

    protected static $instance=null;

    //不允许实例化
    protected function __construct(){}
    protected function __clone(){}

    public static function getInstance(){
        if(!self::$instance instanceof self){
            self::$instance=new self();
        }
        return self::$instance;
    }
}

$test = Site::getInstance();

var_dump($test);
代码语言:javascript
复制
<?php
//
/**
 * 单例模式
 * 工厂模式
 * 注册树模式
 *
 */
//单例模式

class Site
{

    //属性
    public $siteName;

    protected static $instance = null;

    //不允许实例化
    protected function __construct($siteName)
    {
        $this->siteName=$siteName;
    }

    protected function __clone()
    {
    }

    public static function getInstance($siteName = 'Hello,单例模式')
    {
        if (!self::$instance instanceof self) {
            self::$instance = new self($siteName);
        }
        return self::$instance;
    }
}

//工厂模式
class Factory
{
    //创建制定类的实例
    public static function create()
    {
        return Site::getInstance();
    }
}

/** 注册对象数
 * Class Register
 * 1.注册:set() 把对象挂到树上
 * 2. 获取:get() 把对象取下来用
 * 3. 3.注销 _unset:把对象删除
 */

class Register
{

    //创建对象池 array
    protected static $objects = array();

    //1.set
    public static function set($alias,$object){
        self::$objects[$alias]=$object;
    }
    //2.get
    public static function get($alias){
        return self::$objects[$alias];
    }

    //3.unset
    public static function _unset($alias){
        unset(self::$objects[$alias]);
    }
}

Register::set('site',Factory::create());
$obj =Register::get('site');
var_dump($obj);
var_dump($obj->siteName)
?>

本文由 Alone88 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 最后编辑时间为: May 8, 2019 at 07:11 pm

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • PHP 单例模式
    • 代码
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档