解密ThinkPHP3.1.2版本之模組和操作映射的範例程式碼

來源:互聯網
上載者:User
模板和操作映射功能是ThinkPHP3.1.2版本支援的對模組和操作設定的映射機制,由於可以通過改變更配置置動態改變(實際真正改變,並非別名)URL訪問地址,加強了應用的安全性,而且,映射機制具有URL不區分大小寫訪問的特性,對於應用的遷移也有很大的協助。

因為,普通情況下,如果需要更改URL的模組或者操作訪問的話,需要改動的檔案較多,容易導致關聯性出錯。尤其是很多應用需要遷移到新版本的時候,由於模型和控制器改動較多,導致URL地址出現大的調整,通過模組和操作映射功能,就可以很輕鬆的解決此類問題。

1.模組映射

要定義模組映射,我們只需要在設定檔中定義:

'URL_MODULE_MAP'=>array(  'user'   => 'Member',  'blog'   => 'Info', )

URL_MODULE_MAP是一個數組,每個數組項表示:

'模組映射名'=>'實際模組名'

映射名稱不區分大小寫,所以設定後,URL訪問從原來的:

http://serverName/index.php/Member/indexhttp://serverName/index.php/Info/index

變成了:

http://serverName/index.php/user/indexhttp://serverName/index.php/blog/index

並且原來的訪問URL是失效的,這也是和定義路由方式改變URL的區別之一。沒有定義映射的模組訪問不變。
定義了模組映射後,可以通過MODULE_ALIAS常量讀取當前模組的URL名稱。

2.操作映射

不僅是模組名稱可以映射,操作名稱也支援映射,而且是針對模組來設定的,操作映射的定義方式為:

'URL_ACTION_MAP'=>array(  'Member'  => array(    'register' => 'add',    ),  'Info'   => array(    'list'   => 'index'    ), )

URL_ACTION_MAP參數是一個二維數組,每個數組項表示:

'實際模組名'=>array(  '操作映射名1'=>'實際操作名1'  '操作映射名2'=>'實際操作名2'  ...... )

操作映射名不區分大小寫,如上定義後,URL訪問從

http://serverName/index.php/Member/addhttp://serverName/index.php/Info/index

變成了(不考慮前面定義的模組映射):

http://serverName/index.php/Member/registerhttp://serverName/index.php/Info/list

同樣,原來的URL地址訪問則失效。沒有定義映射的操作訪問地址不變。
定義了操作映射後,可以通過ACTION_ALIAS常量讀取當前操作在URL地址中的操作名。
操作映射和模組映射可以同時定義,沒有影響,例如:

'URL_MODULE_MAP'=>array(  'user'   => 'Member', ), 'URL_ACTION_MAP'=>array(  'Member'  => array(    'register888' => 'add',    ), )

則,原來的登入位址

http://serverName/index.php/Member/add

變成了

http://serverName/index.php/user/register888

3.U函數自動支援

可能很多人會擔心,在設定了模組和操作映射後,U函數就會出現需要隨之改動的情況。其實不需要擔心,因為U函數內部已經自動支援了模組和操作映射的情況。
例如,原來在模板檔案中使用了

使用者註冊

無論如何定義Member模組和add操作的映射,U方法的寫法始終保持不變,仍然會正確的指向映射後的URL地址。

總結:

模組和操作映射可以用於如下場合:

1、有經常變化URL需要的場合
2、對URL安全性較高的場合
3、需要移植的應用不希望改變URL地址的場合

需要注意的事項:

在使用了模組和操作映射後,對相關URL地址的路由定義可能需要調整。


http://www.bkjia.com/PHPjc/825438.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/825438.htmlTechArticle模板和操作映射功能是ThinkPHP3.1.2版本支援的對模組和操作設定的映射機制,由於可以通過改變更配置置動態改變(實際真正改變,並非別名)...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.