簡體   English   中英

我不懂路由

[英]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!';
});

這基本上是發生的:

  1. 客戶要求example.com/page1
  2. 服務器發送查詢到PHP
  3. 您的PHP框架解析請求URL
  4. 選擇正確的路線,在本例中為第1 page1/
  5. 最后調用您傳入的函數,因此基本上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!';
});

此代碼片段是您項目的核心。

這將接受兩個參數。

  1. 路線

  2. 呼叫此路線的方法

考慮下面的代碼片段,如果您的項目目錄為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM