阿喆的博客空间 > 技术分享 > php语言 >

php3大经典模式(附代码)

 作者:阿喆 时间:2018-08-26
<?php
/**
单例模式
工厂模式
注册树模式
**/
class Site{
    //属性
    public $siteName;
    //本类的静态实例
    protected static $instance =null;
    //禁用掉构造器
    private function __construct($siteName) {
            $this->siteName = $siteName;
        }
        //获取本类唯一实例
        public static function getInstance($siteName="设置一个默认参数"){
            if(!self::$instance instanceof self){
                self::$instance =new self($siteName);
            }
            return self::$instance;
        }
        
}

//使用工厂模式生成本类的单一实例
class Factory{
    public static function create(){
        return Site::getInstance("设置的传值");
    }    
    
}

/**对象注册树
注册功能set(),把对象挂在树上
获取功能get(),吧对象取下来
注销功能_unset(),吧对象注销
 **/
class Register{
 //创建对象池
 protected static $objects =[];
 public static function set($alias,$object){
        //self::$objects['$key'] = $value;
        self::$objects['$alias'] = $object;
 }
//从树上取下对象
  public static function get($alias){
      return self::$objects['$alias'];
 }
//将树上的对象注销掉
public static function _unset($alias){
    unset(self::$objects['$alias']) ;
 }
}

//使用,将site的实例上树,放到对象池
Register::set("site", Factory::create());
//从树上取一个对象下来
$obj = Register::get('site');
//var_dump($obj);
var_dump($obj->siteName);


上一篇:PHP之PDO类