使用者通過指定的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 }
這裡僅僅是最簡單的php路由技術的原理。事實上真正為乙個專案或者框架進行路由開發,可能須要可以相容非常多複雜的情況。須要對各種情況都要考慮到。/* user.class.php 檔案源** */
<?php
class
user
public
function
login
() }
PHP路由技術的原理與實踐
使用者通過指定的url正規化對後台進行訪問,url路由處理類進行處理後,到邏輯處理類,邏輯處理類將請求結果返回給使用者。約定一套自己喜歡的,對搜尋引擎友好,對使用者友好的url規則 對使用者請求的url進行解析處理,獲取到使用者請求的類,方法,以及query引數等,並將請求 給邏輯處理類。處理 的真...
php路由原理 PHP路由設定原理
0x00 路由實現原理 使用者通過指定的url正規化對後台進行訪問,url路由處理類進行處理後,到邏輯處理類,邏輯處理類將請求結果返回給使用者。約定url正規化和規則 約定一套自己喜歡的,對搜尋引擎友好,對使用者友好的url規則 url處理類 對使用者請求的url進行解析處理,獲取到使用者請求的類,...
php 路由實現 PHP路由原理
路由的原理 路由主要將url中的控制器,辦法解析出來,對映到對應的控制器和辦法中。通常咱們會看到這樣的位址這個位址咱們要把它解析出來。示例 在瀏覽器位址列輸入以下 後台部分 建立乙個控制器類 classusercontroller publicfunctiondel id,name echo 當時途...