首页 > 代码库 > PHP 设计模式 单例模式 工厂模式 注册模式

PHP 设计模式 单例模式 工厂模式 注册模式

1.工厂模式,工厂方法或者类生成对象,而不是在代码中直接new

2.单例模式,使某个类的对象仅允许创建一个

3.注册模式,全局共享和交换对象

项目文件目录

入口文件 index.php

 1 <?php 2 /** 3  * Created by PhpStorm. 4  * Author: Administrator 5  * Date: 14-11-22 6  * Time: 下午3:42 7  */ 8  9 define(‘BASEDIR‘,__DIR__);10 include BASEDIR.‘/Imooc/Loader.php‘;11 spl_autoload_register(‘\\Imooc\\Loader::autoload‘);12 13 Imooc\Factory::CreateDatabase();  //初始化对象14 $db=Imooc\Register::_get(‘db‘);15 $db->field()->where()->order()->group()->limit()->select();

自动加载类 Loader.php

 1 <?php 2 /** 3  * 自动加载类 4  * Created by PhpStorm. 5  * Author: Administrator 6  * Date: 14-11-22 7  * Time: 下午4:12 8  */ 9 10 namespace Imooc;11 12 13 class Loader {14 15     public static function autoload($class){16         require_once BASEDIR.‘/‘.str_replace(‘\\‘,‘/‘,$class).‘.php‘;17     }18     19 } 

工厂类 Factory.php

 1 <?php 2 /** 3  * 工厂类 4  * 5  * Created by PhpStorm. 6  * Author: Administrator 7  * Date: 14-11-22 8  * Time: 下午3:53 9  */10 11 namespace Imooc;12 13 14 class Factory {15 16     public static function CreateDatabase(){17         $db=Dbtabase::getInstance();18         Register::_set(‘db‘,$db);  //注册到对象树19         return $db;20     }21 22 } 

注册树类 Register.php

 1 <?php 2 /** 3  * 注册树类 4  * 5  * Created by PhpStorm. 6  * Author: Administrator 7  * Date: 14-11-22 8  * Time: 下午5:04 9  */10 11 namespace Imooc;12 13 14 class Register {15 16     protected static $Objects;17 18     /**19      * 注册到对象树20      *21      * @param $alias 对象映射22      * @param $object 对象23      */24     public static function _set($alias,$object){25         self::$Objects[$alias]=$object;26     }27 28     /**29      * 获取对象树对象30      *31      * @param $alias 对象映射32      * @return mixed33      */34     public static function _get($alias){35         return self::$Objects[$alias];36     }37 38     /**39      * 注销对象树对象40      *41      * @param $alias 对象映射42      */43     public static function _unset($alias){44         unset(self::$Objects[$alias]);45     }46 47 } 

数据库操作类 Dbtabase.php

  1 <?php  2 /**  3  * 数据库操作类  4  *  5  * Created by PhpStorm.  6  * Author: Administrator  7  * Date: 14-11-22  8  * Time: 下午4:05  9  */ 10  11 namespace Imooc; 12  13  14 class Dbtabase { 15  16     private static $_instance; 17  18     protected $option=array(); 19  20     /** 21      * 构造方法 22      */ 23     private function __construct(){ 24  25     } 26  27     /** 28      * 单例模式创建对象 29      * 30      * @return Dbtabase 31      */ 32     public static function getInstance(){ 33         if(!(self::$_instance instanceof self)){ 34             self::$_instance = new self; 35         } 36         return self::$_instance; 37     } 38  39     public function __set($key,$value){ 40         $this->option[$key]=$value; 41     } 42  43     public function __get($key){ 44         return $this->option[$key]; 45     } 46  47     /** 48      * 调用不存在方法名时回调函数 49      * 50      * @param $func 方法名 51      * @param $param 参数 52      * @return string 53      */ 54     public function __call($func,$param){ 55         return "magic function\n"; 56     } 57  58     /** 59      * 调用不存在静态方法名时回调函数 60      * 61      * @param $func 方法名 62      * @param $param 参数 63      * @return string 64      */ 65     public static function __callStatic($func,$param){ 66         return "magic static function\n"; 67     } 68  69     /** 70      * 打印对象时回调函数 71      * 72      * @return string 73      */ 74     public function __toString(){ 75         return __CLASS__; 76     } 77  78     /** 79      * 将对象当函数使用时回调函数 80      * 81      * @param $param 参数 82      */ 83     public function __invoke($param){ 84         return "invoke"; 85     } 86  87     /** 88      * 析构方法 89      */ 90     function __destruct(){ 91  92     } 93  94     public function field(){ 95         return $this; 96     } 97  98     public function where(){ 99         return $this;100     }101 102     public function order(){103         return $this;104     }105 106     public function group(){107         return $this;108     }109 110     public function limit(){111         return $this;112     }113 114     public function select(){115         return $this;116     }117 118 } 

前台项目控制器类 index.php

 1 <?php 2 /** 3  * Created by PhpStorm. 4  * Author: Administrator 5  * Date: 14-11-22 6  * Time: 下午5:57 7  * 8                    _ooOoo_ 9                   o8888888o10                   88" . "8811                   (| -_- |)12                   O\  =  /O13                ____/`---‘\____14              .‘  \\|     |//  `.15             /  \\|||  :  |||//  16            /  _||||| -:- |||||-  17            |   | \\\  -  /// |   |18            | \_|  ‘‘\---/‘‘  |   |19            \  .-\__  `-`  ___/-. /20          ___`. .‘  /--.--\  `. . __21       ."" ‘<  `.___\_<|>_/___.‘  >‘"".22      | | :  `- \`.;`\ _ /`;.`/ - ` : | |23      \  \ `-.   \_ __\ /__ _/   .-` /  /24 ======`-.____`-.___\_____/___.-`____.-‘======25                    `=---=‘26 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^27          佛祖保佑       永无BUG28 */29 30 namespace App\Home\Controller;31 32 33 class index {34 35     public function index(){36         echo "Hello,World!";37     }38 39 } 

 

PHP 设计模式 单例模式 工厂模式 注册模式