PHP:ORM的是是非非及DRYSQL介绍_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHP:ORM的是是非非及DRYSQL介绍

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

 2011/1/9 9:16:40  bardo  http://bardo.javaeye.com  我要评论(0)
  • 摘要:说起ORM,很多人认为,那是在JAVA中的事,尽管现在有Doctrine,Propel这样优秀的PHP的ORM开源,但很多人还是有抵触情绪。ORM要生成ORM对象,从这一点而言,肯定会降低程序运行效率。但如果有了ORM,代码将会是什么样子:比如使用ActiveRecord,代码将会是这样:$user=newUser();$user->id=1;$user->name='roga';$user->gender='male';$user->location='sh'
  • 标签:PHP SQL

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

发表评论
用户名: 匿名