首页 > 代码库 > 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 设计模式 单例模式 工厂模式 注册模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。