当前位置: 代码迷 >> SQL >> PHP:ORM的是非及DRYSQL介绍
  详细解决方案

PHP:ORM的是非及DRYSQL介绍

热度:24   发布时间:2016-05-05 12:45:28.0
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使用还要方便,可以说是最好的新技术了。

  相关解决方案