以前写的,转到这里!
因为要开发项目,所以用TP来快速搭建,感觉对于中小型项目来说,TP还算一款不错的框架,轻量级,使用简单,开发快速,但是估计用到大的项目就不行了,抽空也看了下zend framwork 的用法,它的MVC思想运用的确比TP要丰富些,毕竟是世界上最牛的PHP框架,很不错,以后抽空要
研究下,不过估计学起来两者大同小异,不过运行速度还是zend要胜出,人家的引擎还是巨牛的。
对于TP来说印象最深的就是它的关联模型,数据库的关联在程序开发中是一个很重要的概念,一般都是表之间的ID关联,如果用传统的SQL语言来关联就要用JOIN ON以及LEFT JOIN 或是RIGHT JOIN来完成,往往增加了思考的复杂性,而TP对于这个流程进行了模块化封装,只需要将一些关键的属性显性的定义出来即可,打个比方:
例如一个表Profile的userId要关联Dept表的id字段
在模块中就如下定义:
protected $_link=array(
'Dept'=> array(
'mapping_type'=>BELONGS_TO, //映射类型,此处是属于的一对多关系
'class_name'=>'Dept', //要关联的数据表名(不含前缀)
'foreign_key'=>'userId', //Profile表中的与Dept表中id字段要关联的字段userId
'mapping_name'=>'dept', //映射名称,即在模板中要用到的关联名称
// 定义更多的关联属性
……
),
);
将上述内容放入ProfileModel中即关联了Dept表,使用很简单很明了,还有其他的一些关联属性
在控制器中使用关联查询时,如下所示:
$Profile=D('Profile');
$data=$Profile->relation(true)->find(1);
print_r($data);
$Profile->display();
以下是运行结果:
array(
'id' => 1,
'account' => 'ThinkPHP',
'password' => '123456',
'Dept' => array(
'email' =>'gs@123.com',
'nickname' =>'状元秀',
),
)
如果在关联属性中加入 'as_fields'=>'email,nickname',则为下列结果
array(
'id' => 1,
'account' => 'ThinkPHP',
'password' => 'name',
'email' =>'gs@123.com',
'nickname' =>'状元秀',
)
这只是一个地方,还有很多犀利的地方就不一一列举了,例如自动验证,自动完成这些强悍的功能,对于快速开发用框架技术的确是很不错的选择,模块化的东西会节省很多时间与精力,对于编程来说,一定要站在
巨人肩上,取百家之长才是硬道理。