PHP路由技術的原理與實踐

2021-09-07 16:35:51 字數 1892 閱讀 2712

使用者通過指定的url正規化對後台進行訪問。url路由處理類進行處理後。**到邏輯處理類,邏輯處理類將請求結果返回給使用者。

約定url正規化和規則

約定一套自己喜歡的,對搜尋引擎友好。對使用者友好的url規則

url處理類(即路由實現的核心)

對使用者請求的url進行解析處理,獲取到使用者請求的類,方法,以及query引數等,並將請求**給邏輯處理類。

邏輯處理類

處理站點的真實業務邏輯。

眼下來說,有兩種比較流行的url格式,一種是普通模式,一種是pathinfo模式。

普通模式

thinkphp框架中,預設的url格式即為普通模式。普通模式url例如以下:

index.php?
m=home&c=user&a=login&v=value

當中m引數的值為模組名稱。c引數的值為控制器名稱,a引數的值為方法名稱,之後的引數則為該方法中所要接收的其它get請求引數

pathinfo模式

codeigniter框架中,預設的url格式為pathinfo模式,例如以下:

index.php/controller/method/prarme1/value1

這塊的意義也已經標註的非常明確了,在method以後,就是方法接收的get引數了,格式就是名稱/值

此處我們選用最簡單的普通單模組模式進行演示。僅僅為說明簡單的原理,例如以下:

index.php?
c=user&a=login&v=value

我們約定引數c為控制器名稱,引數a為方法名稱,之後的均是get引數

<?php

include

'index.class.php';

include

'user.class.php';

// 對使用者請求url進行處理

$query = $_get;

$controller = isset($query['c']) ? $query['c'] : 'indexcontroller';

$action = isset($query['a']) ? $query['a'] : 'index';

if (class_exists($controller)) else

} else

當中unset()掉兩個get引數,僅僅是為了對真正呼叫的方法造成其它影響。

邏輯處理類就是終於的業務邏輯,也就是真正的回應使用者請求的**片段。以下僅僅是乙個簡單的演示樣例:

/* index.class.php 檔案源** */

<?

php

class

indexcontroller }

/* user.class.php 檔案源** */

<?php

class

user

public

function

login

() }

這裡僅僅是最簡單的php路由技術的原理。事實上真正為乙個專案或者框架進行路由開發,可能須要可以相容非常多複雜的情況。須要對各種情況都要考慮到。

PHP路由技術的原理與實踐

使用者通過指定的url正規化對後台進行訪問,url路由處理類進行處理後,到邏輯處理類,邏輯處理類將請求結果返回給使用者。約定一套自己喜歡的,對搜尋引擎友好,對使用者友好的url規則 對使用者請求的url進行解析處理,獲取到使用者請求的類,方法,以及query引數等,並將請求 給邏輯處理類。處理 的真...

php路由原理 PHP路由設定原理

0x00 路由實現原理 使用者通過指定的url正規化對後台進行訪問,url路由處理類進行處理後,到邏輯處理類,邏輯處理類將請求結果返回給使用者。約定url正規化和規則 約定一套自己喜歡的,對搜尋引擎友好,對使用者友好的url規則 url處理類 對使用者請求的url進行解析處理,獲取到使用者請求的類,...

php 路由實現 PHP路由原理

路由的原理 路由主要將url中的控制器,辦法解析出來,對映到對應的控制器和辦法中。通常咱們會看到這樣的位址這個位址咱們要把它解析出來。示例 在瀏覽器位址列輸入以下 後台部分 建立乙個控制器類 classusercontroller publicfunctiondel id,name echo 當時途...