php orm评测,php orm

用感觉这个词 说明我还是不太懂

不过感觉这个机制可以提升开发效率

o(object) r(relation)

m(mapping) 对象关系映射

简单的说 就是 把数据库结构 映射到 对象里面 例如:

talbe:student

key:id ,name ,sex

通过orm 以后 会生成一个 student对象

对象的简化描述为:

属性:id ,name ,sex

方法:setid setname setsex ,getid

getname getsex save getAll delete

可以想象 有这么个机制存在 繁琐的数据库操作简化为 简单的 一两行代码 开发效率的提升

可想而知

但是在效率上来说 ,开发效率 和执行效率 是反比的 要开发效率 就要牺牲 部分的 执行效率 不过

个人感觉这也是值得的

你想,一个简单的系统用这个机制的话 因为是简单系统 我想系统开支也不大 加上比如一句插入操作就需要$object->save();

这么简单 而一个复杂的系统 本身 就需要 高的可维护性 和

可扩展性 如果用一般的sql方法的话维护起来有多麻烦 修改一个字段

可能好多地方都需要修改 而orm 如果是自动映射的话

根本可以省了这一步骤 如果是用配置文件来映射的话 也

只需要改下配置文件就可以了 。

关于orm的映射的实现 其实上面也提到了 不外胡两种

自动映射 利用配置文件映射 各有各的好处 ,可能根本上来说

还是 执行效率和 开发效率上的区别,个人倾向于自动

。要自动就全自动 搞的半自动 感觉不够爽快

具体的实现上 我想可能也有区分 有的是 生成class文件 有的是动态生成 两者我想也差不多是上面说的区别吧

下面我们模拟简单的实现过程

实现的时候首先需要:

数据接口$dbObj

配置文件$ormConfig

基础映射类$ormBase

映射类$ormObj extends

ormBase

然后$orm=new ormObj($dbObj,$ormConfig);

$orm->create('classname');

生成了 $classname 对象 这是动态的生成 如果是静态的生成 那就还需要由文件里面通过类来生成,生成的时候 可以考虑用工厂模式

比如用orm_factory($classname,$table);

生成以后 最好用 单件模式 /或者注册模式到全局 $single_global['classname'] =&$classname;

其他也类似这样的 当然如果是动态的 就要 用到一个

生成一个 而且结束的时候 记得销毁 以节省资源

然后你在用到的 地方只需调用$single_global['classname']; 就可以了。

include('orm.php');

$student=&orm_factory('student','student');

$rows=$student->getAll(array(id,name,sex),0,50);

............................

?>

这里的 记录集合可以用activate record 或者简单的数组

这样在整个 操作过程中,你就不需要在为sql 头疼了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自主封装的PHP ORM框架,面向对象的PDO数据库操作,API框架,支持Get/Post/Put/Delete多种请求方式。 代码示例: <?php use Models\User; require '../application.php'; require '../loader-api.php'; //适合查询,如:获取用户列表或者单个用户信息 execute_request(HttpRequestMethod::Get, function() { $action = request_action(); //判断是否存在 if ($action == 1) { list($type, $value) = filter_request(array( request_int('type', 1, 2, 3), //1.用户名 2.邮箱 3.手机号 request_string('value'))); $type_field_map = array( 1 => User::$field_username, 2 => User::$field_email, 3 => User::$field_phone ); if ($type == 2 && !is_email($value) || $type == 3 && !is_mobilephone($value)) { die_error(USER_ERROR, $type_field_map[$type]['name'] . '格式无效'); } $user = new User(); $user->set_where_and($type_field_map[$type], SqlOperator::Equals, $value); $result = $user->exists(create_pdo()); echo_result($result ? 1 : 0); //存在返回1,不存在返回0 } //查询单条信息 if ($action == 2) { list($userid) = filter_request(array( request_userid())); //查询单条数据 $user = new User($userid); //set_query_fields可以指定查询字段,下面两种写法均可 //$user->set_query_fields('userid, username, email'); //$user->set_query_fields(array(User::$field_userid, User::$field_username, User::$field_email)); //还可设置where条件进行查询 //$user->set_where_and(User::$field_status, SqlOperator::Equals, 3); //$user->set_where_and(User::$field_truename, SqlOperator::IsNullOrEmpty); //$user->set_where_and(User::$field_age, SqlOperator::In, array(27, 29)); //$user->set_where_and(User::$field_regtime, SqlOperator::LessThan, '-6 month'); //创建数据库连接 $db = create_pdo(); $result = $user->load($db, $user); //也可以用Model类的静态方法 //$result = Model::load_model($db, $user, $user); if (!$result[0]) die_error(PDO_ERROR_CODE, '获取用户信息时数据库错误'); if (!$user) di
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值