首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

PHP:ORM的是非及DRYSQL介绍

2012-12-25 
PHP:ORM的是是非非及DRYSQL介绍说起ORM,很多人认为,那是在JAVA中的事,尽管现在有Doctrine,Propel这样优秀

PHP:ORM的是是非非及DRYSQL介绍

说起ORM,很多人认为,那是在JAVA中的事,尽管现在有Doctrine,Propel这样优秀的PHP的ORM开源,但很多人还是有抵触情绪。

ORM要生成ORM对象,从这一点而言,肯定会降低程序运行效率。但如果有了ORM,代码将会是什么样子:

比如使用ActiveRecord,代码将会是这样:

$user = new User();$user->id = 1;$user->name = 'roga';$user->gender = 'male';$user->location = 'sh';$user->save();

?

这样的代码实在是清析明了,易维护。

当然,ActiveRecord有相当多的规范约束。这给使用还是带来了相当的不便。因此,选择Doctrine,Propel,也就大有人在。

于是,又有人反对,Doctrine,Propel代码量实在是太多了。再生成对象,肯定降低效率。

近两年,Ruby On Rails中出现了一个插件,叫做:DrySql,这是一种用于ActiveRecord的ORM的插件。但它的思想实在是先进。于是,我不把它当成插件,而是当成完全的全新的ORM方式,移植到了我们自己所用的开发框架中了,于是,我们的代码现在是这样:

$user=$this->db->loadDataRow('user');$insertData=array(  'id'=>1,  'name'=>'roga',  'gender'=>'male',  'city'=>$city,  'location'=>'sh',  );$user->create($insertData);

?

当然还可以这样:

$user=$this->db->loadDataRow('user');$user->setByName('id',1);$user->setByName('name','roga');$user->setByName('gender','male');$user->setByName('city',$city);$user->setByName('location','sh);$user->create();

?

可以看出,无论哪一种形式,都与真正的ORM几乎汉有区别。

ORM好处在哪里?这里已经完全清楚,其实,不仅是代码的可维护性,同时,也是让程序员做到,与SQL的无关性。

这两者,实际上都是相当重要的。而DRYSQL技术,不需要生成表与记录的对象文件,并且比ActiveRecord使用还要方便,可以说是最好的新技术了。

热点排行