[英]I don't understand routing
我正在嘗試學習一個PHP框架。 但是我在理解某些路由概念時遇到了一些困難。
我選擇使用Flight 。 他們的主頁顯示:
require 'flight/Flight.php';
Flight::route('/', function(){
echo 'hello world!';
});
Flight::start();
而且我不明白他們在用Flight::route...
做什么。 我想念什么? 這個問題甚至與飛行無關。 通常,它只與路由有關。
路由基本上將HTTP請求映射到您的方法/函數。
簡單來說,假設您有路線:
Flight::route('/page1', function() {
echo 'page1!';
});
這基本上是發生的:
example.com/page1
page1/
echo 'page1';
Flightphp對於如何在此處設置航線有相當全面的解釋。
您應該將路由視為如何處理不同請求模式的定義。 Flight主頁上的示例說,如果您打入站點根目錄(即/),它將僅返回“ hello world!”。 作為回應。
如果您在Flightphp安裝頁面上進一步閱讀,您會注意到所有請求都由index.php頁面處理。 因此,根據您定義的路由,它會回復為該url請求模式定義的相關響應。
您的文件中似乎正在發生什么(我不熟悉Flight)
require 'flight/Flight.php';
很有可能為所有路由定義一個類。
然后Flight::route();
只是使用Flight
類中的route()
方法而沒有該類的實例。
Flight::route('/', function(){
echo 'hello world!';
});
這里發生的是當路由匹配時(通過匹配意味着用戶的URI與您的路由上的URI匹配,在這種情況下, www.yourdomain.com/
'/'
將匹配'/'
路由),然后在function()
內部進行編碼function()
回調得到執行。
如果您添加其他路線
Flight::route('/about', function(){
echo 'About Us';
});
當用戶訪問www.yourdomain.com/about
他將獲得該路線中的內容。
route()似乎是一個靜態函數,這意味着它不特定於該對象,即,您無法創建諸如
$flight = new Flight();
然后打電話
$flight->route(...)
但是您可以通過類(而不是對象,它是類的特定實現)來調用它。 您可以使用::來調用類的靜態函數,在這種情況下
Flight::route(...)
路線的內容只是說,當您遇到“ /”時,請執行“ X” ...,在您的情況下,“ X”為
function(){
echo 'hello world!';
}
在以后的階段中,您可以匹配諸如
'/' (homepage, i.e. "mywebsite.com/")
'/about-us' (About Us page, i.e. "mywebsite.com/about-us")
'/user/{id}' (User page, i.e. you can pass a parameter such as "mywebsite.com/user/taylor" and then get the user data)
或任何你想要的。 而且,不僅可以將功能寫入路由文件中,還可以告訴路由器轉到特定功能(通常是控制器功能),然后可以在其中執行更多操作。
我希望這有幫助!
Flight::route('/', function(){
echo 'hello world!';
});
此代碼片段是您項目的核心。
這將接受兩個參數。
路線
呼叫此路線的方法
考慮下面的代碼片段,如果您的項目目錄為http://localhost/flight_project/
,則當有人請求此目錄時,將調用定義為'function_here'
。
Flight::route('/', 'function_here');
如果您定義了以下路線,
Flight::route('/user/', function(){
// do something here
});
當有人訪問http://localhost/flight_project/user/
,將調用上述內聯函數。
更多信息在這里
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.