ThinkPHP 3.1快速入門:控制器高級特性

來源:互聯網
上載者:User
關鍵字 快速入門 ThinkPHP 高級特性

ThinkPHP的控制器層由核心控制器和業務控制器組成,核心控制器由系統內部的App類完成,負責應用(包括模組和操作)的調度控制,包括HTTP請求攔截和轉發、載入配置等,業務控制器則由使用者定義的HTTP:// www.aliyun.com/zixun/aggregation/16339.html">Action類或者其他控制器類完成。
我們通過前面的學習,已經瞭解了基本的控制器用法,這一篇我們來講述下控制器的一些特性和高級用法,來探索ThinkPHP控制器的神秘外衣。

Action參數綁定

在前面的內容中,我們涉及的所有操作方法都是沒有任何參數的,其實從3.1版本開始,可以支援參數綁定功能。 Action參數綁定的原理是把URL中的參數(不包括分組、模組和操作名)和控制器的操作方法中的參數(按變數名)進行綁定。
例如,我們給Blog模組定義了兩個操作方法read和archive方法,並且給read操作需要指定一個id參數,archive方法指定年份(year)和月份(month)兩個參數。 為了演示方便,我們省去了具體操作方法的業務代碼,僅僅用echo 輸出當前的參數。 URL的訪問位址分別是: 兩個URL位址中的id參數和year和month參數會自動和read操作方法以及archive操作方法的同名參數綁定。
輸出的結果依次是: Action參數綁定的參數必須和URL中傳入的參數名稱一致,但是參數順序不需要一致。 也就是說 和上面的訪問結果是一致的,URL中的參數順序和操作方法中的參數順序都可以隨意調整,關鍵是確保參數名稱一致即可。
如果使用者訪問的URL位址是(至於為什麼會這麼訪問暫且不提): 那麼會拋出下面的異常提示: 報錯的原因很簡單,因為在執行read操作方法的時候,id參數是必須傳入參數的,但是方法無法從URL位址中獲取正確的id參數資訊。 由於我們不能相信使用者的任何輸入,因此建議你給read方法的id參數添加預設值,例如: 這樣,當我們訪問 的時候 就會輸出 當我們訪問 的時候,輸出: 參數綁定功能不受路由影響,從路由中匹配和URL傳入的參數一樣有效, 並且綁定的參數如果需要特殊處理和過濾的話,需要另行處理。

class BlogAction extends Action{     public function read($id){         echo 'id='.$id;     }        public function archive($year='2012',$month='01'){         echo 'year='.$year.' &month='.$month;     } } HTTP://serverName/index.php/Blog/read/id/5 HTTP://serverName/index.php/Blog/archive/year/2012/month/03 id=5 year=2012&month=03 HTTP://serverName/index.php/Blog/archive/month/03/year/2012 HTTP://serverName/index.php/ Blog/read/ 參數錯誤:id public function read($id=0){     echo 'id='.$id; } HTTP://serverName/index.php/Blog/read/ id=0 HTTP://s erverName/index.php/Blog/archive/  year=2012&month=01

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.