结构应该是这样的,Database.php中提供了所有的接口,where,connect, order, limit.....然后三种数据库文件分别对其进行具体函数的实现。
2017-06-13
这里用到了ORM关系映射,用到了工厂模式,工厂模式的通用方法有个缺点就是不能传
参数。所以还是定义了相对具体的工厂,生产不同的对象用不同的方法,同时在生产对象
的同时用到了单例思想,单例思想其实就是注册器的严格版,单例只能注册一个对象到
本类的私有属性。注册器却可以注册很多对象到自己的数组类型的属性里去。对象的key是
根据工厂生产的时候传入参数(通用生产方法里以类名为参数的方式行不通,应该也是可以动态组装参数列表的,回头研究哈)动态组装的。再次生产同一个对象的时候,会根据这个同样的参数按同样的规则到数组里查询对象,如果存在,就不生产,直接返回,如果不存在,就生
并注册一个。方便下次调用
参数。所以还是定义了相对具体的工厂,生产不同的对象用不同的方法,同时在生产对象
的同时用到了单例思想,单例思想其实就是注册器的严格版,单例只能注册一个对象到
本类的私有属性。注册器却可以注册很多对象到自己的数组类型的属性里去。对象的key是
根据工厂生产的时候传入参数(通用生产方法里以类名为参数的方式行不通,应该也是可以动态组装参数列表的,回头研究哈)动态组装的。再次生产同一个对象的时候,会根据这个同样的参数按同样的规则到数组里查询对象,如果存在,就不生产,直接返回,如果不存在,就生
并注册一个。方便下次调用
2017-06-08
需要新建Database.php
namespace Imooc;
interface IDatebase
{
function connect($host,$user,$passwd,$dbname);
function query($sql);
function close();
}
namespace Imooc;
interface IDatebase
{
function connect($host,$user,$passwd,$dbname);
function query($sql);
function close();
}
2017-06-08
我觉得老师讲的还不错,至少比那一大本书精简,不过确实有漏洞,我是一边敲代码一边看,发现工厂模式和单例模式其实是冲突的。工厂访问不到单例模式的的构造方法,没有办法去new。另外老师在得工厂模式生产方法不够通用,我改成这样:
static function createObject($class,$alias){
$object=new $class();
Register::set($alias,$object);//结合注册器进行注册
return $object;
}
static function createObject($class,$alias){
$object=new $class();
Register::set($alias,$object);//结合注册器进行注册
return $object;
}
2017-06-08