1. php路由怎麼實現

你這抄個的襲話 index.php 得這么寫


<?php
header('content-type:text/html;charset=utf-8');
$actio=$_GET['actio'];
$do=$_GET['do'];
include$actio.'/'.$do.'.php';

2. ThinkPHP的路由是如何實現的

首先,要確認你的web伺服器有沒有打開rewrite,然後在conf文件下配置,
'URL_ROUTER_ON'=> TRUE,//打開路由;
'URL_ROUTE_RULES'=>array(
//路由規則,用正則來匹配;
)

3. 如何實現THINKPHP路由,PHP偽靜態

tp 的路由隨便,url,pathinfo,rewirte 都可以。
我這里用apache舉例:

1 開啟rewirte : LoadMole rewrite_mole moles/mod_rewrite.so

2 網站根目錄增加 .htaccess 文件,內容如下:

RewriteEngine on
RewriteBase /
RewriteRule ^local/show_(\d*).html index.php/local/show/id/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteCond %{REQUEST_FILENAME} !-d [NC]
RewriteRule ^(.*)$ index.php/$1 [L]

我這里的 local/show_(\d*).html index.php/local/show/id/$1 是根據當前tp的路由來寫的
如果是url模式可寫為 :
RewriteRule ^local/show_(\d*).html index.php?m=local&a=show&id=$1 [L]

測試:
localAction.class.php 內容為:

<?php
class localAction extends Action{
public function show(){
echo 'id is: ' .$_GET['id'];
}
}
?>

4. PHP中路由功能的原理和定義,有沒有一個基本的例子

1 網路互連

把自己的網路同其它的網路互連起來,從網路中獲取更多的信息和向網路發布自己
的消息,是網路互連的最主要的動力。網路的互連有多種方式,其中使用最多的是網橋
互連和路由器互連。

1.1 網橋互連的網路

網橋工作在OSI模型中的第二層,即鏈路層。完成數據幀(frame)的轉發,主要目
的是在連接的網路間提供透明的通信。網橋的轉發是依據數據幀中的源地址和目的地址
來判斷一個幀是否應轉發和轉發到哪個埠。幀中的地址稱為「MAC」地址或「硬體」
地址,一般就是網卡所帶的地址。

5. 如何在PHP中實現URL路由

統一網站的入口,方便程序在應用環境初始變數方面的初始化工作,使網站更安全。

統一的入口會對URL進行解析,初始化環境神馬的,然後分配不同的工作,有點像路由器。
這樣可以美化URL,便於用戶記憶,優化搜索引擎收錄。

6. 我想嘗試著寫個小型PHP框架,現在卡在類自動載入和路由實現上了

類自動載入跟路由是框架最基礎的特性

給你點自動載入的思路,首先現在寫框架必須用上命名空間,框架內部的類文件夾根據命名空間命名方便自動載入

在入口文件引入自己寫的Autoload.php 通過spl_autoload_register獲得要載入的類名

spl_autoload_register(function($class_name){
Autoload::splAutoload($class_name);
});

asseek outeRouter


asseekFunc


asseek outeRoute


appwwwdocsdocsController


asseekController


asseekView


如果你採用命名空間上面函數的$class_name是類似這樣的字元串,只要你有當前項目的初始路徑再根據這段字元串require相應的php文件應該不難,自動載入就搞定了。

路由就更簡單了就是通過$_SERVER['REDIRECT_URL'] 或$_SERVER['REDIRECT_URI'] 獲得用戶訪問的URL,根據自己的框架制定的規則從URL中取得控制器與控制器方法名稱,判斷controller的類是否存在,存在則實例化,再判斷controller的method是否存在,存在則調用方法,方法裡面載入視圖等就是另外的事情了。

7. php怎樣不使用框架的情況下本地模擬url路由,實現localhost/a/id/1這種的訪問方式

要實現路由的話你依然需要框架中路由器的支持,因為伺服器不能理解你路徑的具體含義.所以你需要一個路由器來幫助伺服器去處理特定的信息.

不想用現成的就自己寫一個簡單的,如下:

首先你需要在htdoc下放一個.htaccess來實現單文件入口:

<IfMolemod_rewrite.c>
RewriteEngineOn

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

</IfMole>

然後自己寫路由咯, index.php

<?php

//這里添加你想要的路徑
$route=array(
//(:num)表示匹配任何數字,(:any)表示任意字元
'a/id/(:num)'=>'TestController:idAction',
'a/any/(:any)'=>'TestController:anyAction',
'a/no' =>'TestController:noAction',

//這里是默認控制器,就是當你訪問localhost的時候用
'_DEFAULT_'=>'IndexController:indexAction',

);

//簡單的Router
classRouter
{

private$route;

publicfunction__construct(array$route)
{
$this->route=$route;
}

publicfunctionparse($url)
{
if(empty($url)){
list($controller,$action)=explode(':',$this->route['_DEFAULT_']);
returnarray(
'controller'=>$controller,
'action' =>$action,
'params' =>array(),
);
}
$trans=array(
':any'=>'[^/]+',
':num'=>'[0-9]+'
);
foreach($this->routeas$u=>$d){
$pattern='#^'.strtr($u,$trans).'$#';
if(preg_match($pattern,$url,$params)){
list($controller,$action)=explode(':',$d);
array_shift($params);
returnarray(
'controller'=>$controller,
'action' =>$action,
'params' =>$params,
);
}
}
header("HTTP/1.0404NotFound");
exit('Pagenotfound');
}
}

$r=newRouter($route);
$arr=$r->parse($_GET['_url']);

require($arr['controller'].'.php');

//執行控制器的功能
$dispatcher=new$arr['controller'];
call_user_func_array(array($dispatcher,$arr['action']),$arr['params']);

?>


控制器1. Testcontroller.php

<?php

classTestController
{
publicfunctionidAction($id)
{
echo"Yourint-onlyidis:{$id}";
}

publicfunctionanyAction($any_id)
{
echo"Youanyidis:{$any_id}";
}

publicfunctionnoAction()
{
echo"Thismethodtakenoparameter";
}
}


默認控制器: IndexController.php

<?php

classIndexController
{
publicfunctionindexAction()
{
echo"HelloWorld!";
}
}

把.htaccess, index.php, TestController.php, IndexController.php放在htdoc里就可以了

8. php怎麼學會一個框架的路由機制

如果用過zend和symphony或者yii的可以去研究一下源碼。
主要是通過偽靜態來實現單一入口,mvc框架都是這樣。將所有請求通過apache偽靜態解析轉給某個指定文件,然後通過php的$_SERVER[]這個全局變數來去的請求的路徑字元串,對其進行解析再分配給指定的類去處理,基本就是這樣。
最簡單的方法是建立一個.htaccess文件。文件內容貼給你
<IfMole !mod_rewrite.c>
ErrorDocument 500 'mod_rewrite must be enabled'
</IfMole>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php

將這個文件放在根目錄下即可。文件作用很明顯:將所有的請求路徑轉給index.php,然後在index.php里做請求字元串的判斷即可打到路由解析功能。