thinkphp架構使用小結
以前寫的,轉到這裡!
因為要開發項目,所以用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' =>[email protected]', 'nickname' =>'狀元秀', ), )
如果在關聯屬性中加入 'as_fields'=>'email,nickname',則為下列結果
array('id' => 1,'account' => 'ThinkPHP','password' => 'name','email' =>[email protected]','nickname' =>'狀元秀', )
這隻是一個地方,還有很多犀利的地方就不一一列舉了,例如自動驗證,自動完成這些強悍的功能,對於快速開發用架構技術的確是很不錯的選擇,模組化的東西會節省很多時間與精力,對於編程來說,一定要站在巨人肩上,取百家之長才是硬道理。