PHP 设计模式 单例模式 工厂模式 注册模式
2014-11-22 18:08
851 查看
1.工厂模式,工厂方法或者类生成对象,而不是在代码中直接new
2.单例模式,使某个类的对象仅允许创建一个
3.注册模式,全局共享和交换对象
项目文件目录
入口文件 index.php
自动加载类 Loader.php
工厂类 Factory.php
注册树类 Register.php
数据库操作类 Dbtabase.php
前台项目控制器类 index.php
2.单例模式,使某个类的对象仅允许创建一个
3.注册模式,全局共享和交换对象
项目文件目录
入口文件 index.php
<?php /** * Created by PhpStorm. * Author: Administrator * Date: 14-11-22 * Time: 下午3:42 */ define('BASEDIR',__DIR__); include BASEDIR.'/Imooc/Loader.php'; spl_autoload_register('\\Imooc\\Loader::autoload'); Imooc\Factory::CreateDatabase(); //初始化对象 $db=Imooc\Register::_get('db'); $db->field()->where()->order()->group()->limit()->select();
自动加载类 Loader.php
<?php /** * 自动加载类 * Created by PhpStorm. * Author: Administrator * Date: 14-11-22 * Time: 下午4:12 */ namespace Imooc; class Loader { public static function autoload($class){ require_once BASEDIR.'/'.str_replace('\\','/',$class).'.php'; } }
工厂类 Factory.php
<?php /** * 工厂类 * * Created by PhpStorm. * Author: Administrator * Date: 14-11-22 * Time: 下午3:53 */ namespace Imooc; class Factory { public static function CreateDatabase(){ $db=Dbtabase::getInstance(); Register::_set('db',$db); //注册到对象树 return $db; } }
注册树类 Register.php
<?php /** * 注册树类 * * Created by PhpStorm. * Author: Administrator * Date: 14-11-22 * Time: 下午5:04 */ namespace Imooc; class Register { protected static $Objects; /** * 注册到对象树 * * @param $alias 对象映射 * @param $object 对象 */ public static function _set($alias,$object){ self::$Objects[$alias]=$object; } /** * 获取对象树对象 * * @param $alias 对象映射 * @return mixed */ public static function _get($alias){ return self::$Objects[$alias]; } /** * 注销对象树对象 * * @param $alias 对象映射 */ public static function _unset($alias){ unset(self::$Objects[$alias]); } }
数据库操作类 Dbtabase.php
<?php /** * 数据库操作类 * * Created by PhpStorm. * Author: Administrator * Date: 14-11-22 * Time: 下午4:05 */ namespace Imooc; class Dbtabase { private static $_instance; protected $option=array(); /** * 构造方法 */ private function __construct(){ } /** * 单例模式创建对象 * * @return Dbtabase */ public static function getInstance(){ if(!(self::$_instance instanceof self)){ self::$_instance = new self; } return self::$_instance; } public function __set($key,$value){ $this->option[$key]=$value; } public function __get($key){ return $this->option[$key]; } /** * 调用不存在方法名时回调函数 * * @param $func 方法名 * @param $param 参数 * @return string */ public function __call($func,$param){ return "magic function\n"; } /** * 调用不存在静态方法名时回调函数 * * @param $func 方法名 * @param $param 参数 * @return string */ public static function __callStatic($func,$param){ return "magic static function\n"; } /** * 打印对象时回调函数 * * @return string */ public function __toString(){ return __CLASS__; } /** * 将对象当函数使用时回调函数 * * @param $param 参数 */ public function __invoke($param){ return "invoke"; } /** * 析构方法 */ function __destruct(){ } public function field(){ return $this; } public function where(){ return $this; } public function order(){ return $this; } public function group(){ return $this; } public function limit(){ return $this; } public function select(){ return $this; } }
前台项目控制器类 index.php
<?php /** * Created by PhpStorm. * Author: Administrator * Date: 14-11-22 * Time: 下午5:57 * _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\||| : |||// \ / _||||| -:- |||||- \ | | \\\ - /// | | | \_| ''\---/'' | | \ .-\__ `-` ___/-. / ___`. .' /--.--\ `. . __ ."" '< `.___\_<|>_/___.' >'"". | | : `- \`.;`\ _ /`;.`/ - ` : | | \ \ `-. \_ __\ /__ _/ .-` / / ======`-.____`-.___\_____/___.-`____.-'====== `=---=' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 佛祖保佑 永无BUG */ namespace App\Home\Controller; class index { public function index(){ echo "Hello,World!"; } }
相关文章推荐
- php 设计模式(注册器模式+工厂模式+数据库映射模式,单例模式+工厂模式+注册器模式混合使用)
- php常用设计模式(策略模式/单例模式/工厂模式)
- PHP设计模式之注册模式
- php模式设计之 注册树模式
- PHP设计模式系列 - 工厂模式
- PHP——大话PHP设计模式——基本设计模式(工厂模式、单例模式、注册器模式)
- PHP设计模式---工厂模式
- PHP五种常用的设计模式——工厂模式
- 慕课网----大话PHP设计模式 三(三种基本设计模式-工厂模式,单例模式,注册树模式)
- php基础设计模式大全(注册树模式、工厂模式、单列模式)
- PHP设计模式之注册树模式详解
- PHP设计模式笔记:使用PHP实现工厂模式
- php设计模式 — 工厂方法模式(多态性工厂模式) (虚拟构造子模式)
- php模式设计之 注册树模式
- PHP设计模式 -- 工厂模式
- PHP设计模式之:工厂模式
- PHP设计模式(二):注册模式
- PHP 设计模式 笔记与总结(6)基础设计模式:工厂模式、单例模式和注册树模式
- php设计模式之工厂模式(工厂模式实现计算器功能)
- php设计模式 工厂模式