作者:LAMP小白 点击:1815 发布日期:2012-10-09 23:36:00 返回列表
这个功能在ANPHP已经实现,我还没看源码,先按照自己的思路实现后再看看我和ANPHP的不同
首先,介绍下这个类的使用了以下设计模式:单元素模式 工厂模式 迭代模式 中介者模式
简单的说 就是一个统一管理框架资源的类,比如我们new一个model
如 _model(mio_#39;usermio_#39;)
那么 $res=mio_#39;modelmio_#39;,$table=mio_#39;usermio_#39;,$type=mio_#39;mio_#39;会作为参数传入到资源管理类 Resource的getModel方法
然后 getModel 会根据
type(连接类型) 如 PDO MYSQLI MYSQL MONGO 和 tableName(表名) 这个就不说了
查找有无已存在的对象,如果有则直接返回 如果没有则实例化再返回
最后就是将已创建的各种资源统一保存在静态属性 objects中 方便下一次搜索
如
model(实例化的模型)
mem (从memcache获取的信息)
time (时间信息)
...
model的代码如下:
static public function getModel($tableName, $type = null) { $modelType = $type ? $type : mioCfg_dbType; $modelName = $modelType.'Model'; if(isset($objects['model'][$modelType][$tableName]) mio_amp;mio_amp; $objects['model'][$modelType][$tableName] instanceof $modelName) return $objects['model'][$modelType][$tableName]; $objects['model'][$modelType][$tableName] = new $modelName($tableName); return $objects['model'][$modelType][$tableName]; }
使用就超简单了 new了3次其实都是同一个资源
public function index() { dump(_model('user')); dump(_model('user')); dump(_model('user')); }
上一篇:访问者模式 下一篇:快递查询API