zoukankan      html  css  js  c++  java
  • 设计模式-单例模式

    <?php
    
    /**
     * 单例模式
     * 
     * 以前写单例构造器的时候总是为如何把需要的参数传给类而烦恼
     * 
     *  如果项目中的类文件都采用这种设计的话就ok了
     * 
     *  每次获取实例的时候都可以更新资源变量
     */
    class Utils_Common {
    
        private static $_instances = array();
    
        /**
         * 单例包装
         * @param 类名 $klass
         * @param 资源变量 $resource
         * @return null object
         */
        public static function getInstance($klass, $resource = null) {
            if (isset(self::$_instances[$klass])) {
                if (null !== $resource) {
                    self::$_instances[$klass]->setResource($resource);
                }
                return self::$_instances[$klass];
            } else {
                if (class_exists($klass)) {
                    self::$_instances[$klass] = new $klass($resource);
                    return self::$_instances[$klass];
                } else {
                    return null;
                }
            }
        }
    
    }
    
    class Db {
    
        //参数等资源
        private $resource;
    
        public function __construct($resource) {
            $this->resource = $resource;
        }
    
        public function setResource($resource) {
            $this->resource = $resource;
        }
    
        public function getResource() {
            return $this->resource;
        }
    
        protected function getRsrcParams($key) {
            return isset($this->resource[$key]) ? $this->resource[$key] : array();
        }
    
        protected function setRsrcParams($key, $value) {
            $this->resource[$key] = $value;
        }
    
        public function go() {
            echo 'success:' . $this->getRsrcParams('host');
        }
    
    }
    
    header('Content-Type:text/plain;charset=utf-8');
    Utils_Common::getInstance('Db', array('host' => 'localhost'))->go();
  • 相关阅读:
    php method_exists( $object , string $method_name )
    php伪类型 (mixed)
    6.6-2-数组与数据结构(用数组及其函数实现堆栈等数据结构)
    6.6-1-php数组相关(2)
    2017.6.5-2-php数组相关(1)
    2017.6.5-1-php函数应用及流程控制
    CodePage
    bat批处理教程
    pip安装及源
    CentOS安装Python3
  • 原文地址:https://www.cnblogs.com/bai-jimmy/p/4307666.html
Copyright © 2011-2022 走看看