PHP中的自訂路由使用小結_PHP教程

來源:互聯網
上載者:User

PHP中的自訂路由使用小結


簡介

我手上有個用PHP寫的網站,類似於個人測試性質的網站,我獨立設計,在這過程中犯了所有可能的設計和編程上的錯誤,同時我也收穫了很多,這也促使 我去學習PHP和MySQL。每當我學習新的技術或web實踐時,都會想到我的網站會從中得益。正如你可以想象到的,它的可讀性不強。測試網站往往在代碼 可讀性和可維護性方面表現糟糕,尤其當你僅僅因為某些必要的功能而學習一門程式設計語言時,而這也正是我一直以來學習PHP的方式。

自從瞭解了ASP.NET MVC,我便思考如何在這個網站上實踐這套MVC模式。我喜歡這整套概念的一切,尤其是路由。但我並不想為此而重構整個網站的現有架構,擔心這樣一來,大 部分現有代碼將變成像是異物一樣,不受我的控制和理解。網站已經有一個WordPress搭建的部落格,通過修改模板讓它看起來就像是一個完整的網站,好比 在一巨大的牆上畫塗鴉一樣,這簡直是一團糟。

然後呢?剛不久前,我學習了一些REST API的相關知識,這是為日常工作所需而學習的。有沒有一個最佳的方式去學習這些呢?我知道有個網站會從中獲益。在網上閱讀了一些關於在PHP環境應用 RESTful API的文章,我瞭解了.htaccess檔案。現在我知道怎樣在PHP中搭建路由,因此,也許能在測試網站實施自己設計的小型的、簡單的MVC模型。

設想

在PHP中搭建自訂路由的關鍵在於增加一個.htaccess檔案,以下請看

具體實現:

我在網站檔案夾目錄中新增了一個”API”檔案夾,在裡面建立一個.htaccess檔案,內容是我從Corey Maynard寫的一段文本中參考來的。


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?request=$1 [QSA,NC,L]

長話短說,有了這個配置,所有以”www.yoursite.com/api/”開頭或指向不存在的檔案或路徑的請求都會被重新導向到 index.php檔案。$1變數值表示請求的URL地址,”request”變數名也很好理解,用$_REQUEST[‘request’]命令就可輕 易擷取。

另外,index.php檔案和.htaccess檔案在同一訪問層級。

可能出現的問題?

事實上,你可能還沒啟用指定的module。

在WampServer環境下,我需要啟用相應module來支援本機運行。一種方法是點擊托盤表徵圖進入”Apache”目錄,在”Apache modules”列表中選中rewrite_module,然後重啟所有服務。另一種方法是編輯httpd.conf檔案,取消下面這段配置的注釋

#LoadModule rewrite_module modules/mod_rewrite.so

我想接下來要做的事情之一就是給網站做幾個自測網頁,好讓我確定網站的負責人沒有改變任何東西。這聽起來可能有點偏執和可笑,但又一次,我需要臨時增加 “set names latin2;”配置來檢視資料庫匯入的資料。

如果想驗證以上配置是否在伺服器上啟用,你可以使用這段代碼:

echo in_array('mod_rewrite', apache_get_modules());

接下來呢?

至此我獲得一些重要的知識,讓我可以為我的網站搭建新的MVC架構。使用新架構比使用現有解決方案更棒,很大程度上由於這讓我在應用MVC模式的過程中獲得廣泛的知識。由於所有代碼都是我個人的工作量,也就沒有任何消耗性組件。

繼續為我的網站建立REST API。現在我才能實質性地將資料庫邏輯從網頁介面中抽離出來。

有用的連結

如果你想知道我是怎樣找到解決方案,那下面是我從中獲得知識的網站 http://coreymaynard.com/blog/creating-a-restful-api-with-php/

譯文連結:http://www.codeceo.com/article/custom-routing-in-php.html
英文原文:Custom routing in PHP

http://www.bkjia.com/PHPjc/1014134.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1014134.htmlTechArticlePHP中的自訂路由使用小結 簡介 我手上有個用PHP寫的網站,類似於個人測試性質的網站,我獨立設計,在這過程中犯了所有可能的設計和...

  • 聯繫我們

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