说起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使用还要方便,可以说是最好的新技术了。