簡介:這是PHP整合你的網站入口的詳細頁面,介紹了和php,有關的知識、技巧、經驗,和一些php源碼等。
class='pingjiaF' frameborder='0' src='http://biancheng.dnbcw.info/pingjia.php?id=324024' scrolling='no'>
大家也許經常在網上看到這樣的路徑(http://www.aaa.com/aaa/bbb/aaa?id=5),讓人不解,這樣的網站的實現方式有幾種可能性:
1、隱藏檔案的副檔名,對這種做法的好處,眾說紛紜,不過個人覺得沒有必要;
2、用了網站的重新導向規則,實現虛擬路徑;
3、強制檔案解析的方式,實現虛擬路徑。
用第2\3種方法可以實現網站的統一介面,合理的整合網站,更好的體現網站的安全性和架構,用這兩種方式的網站大多是使用"MVC"模式構建和實現的。
下面是一個例子
訪問路徑如下:
....../test/*******/Bad ....../test/*******/Good (其中的"******"可以用任何字串替換,"......."是你的web路徑) |
檔案的目錄結構如下
|--.htaccess |-- test |-- Application.php |-- Controler/GoodControler.php |-- Controler/BadControler.php |
注意檔案".htaccess",在windows下不能直接建立的,可以在命令列模式下建立.
檔案0 (.htaccess) (這個檔案是更改apache的配置方式用的)
<files test> forcetype application/x-httpd-php </files> |
檔案1 (test.php)
<?php /*------------------------------------- * test.php * * 作為你的網站的入口的檔案 * 用來初始化和入口 * 調用執行Controler的調用 * -------------------------------------*/ require "Application.php"; $aa = new Application(); $aa->parse(); $aa->go(); ?> |
檔案2 (GoodControler.php)
<?php /*------------------------------------- * GoodControler.php * * 用來控制 url=/test/Good 來的訪問 * -------------------------------------*/ class GoodControler{ /* * 控制類的調用方法,唯一的報漏給外部的介面 */ function control(){ echo "this is from GoodControler url=*********/test/Good"; } } ?> |
檔案3 (BadControler.php)
<?php /*------------------------------------- * BadControler.php * * 用來控制 url=/test/Bad 來的訪問 * -------------------------------------*/ class BadControler{ /* * 控制類的調用方法,唯一的報漏給外部的介面 */ function control(){ echo "this is from GoodControler url=*********/test/Bad"; } } ?> |
檔案4 (Application.php)
<?php /*------------------------------------- * Application.php * * 用來實現網站的統一入口,調用Controler類 * -------------------------------------*/ class Application{ //用來記錄所要進行的操作 var $action; //controler檔案的路徑名 var $controlerFile; //controler的類名 var $controlerClass; function Application(){ } function parse(){ $this->_parsePath(); $this->_getControlerFile(); $this->_getControlerClassname(); } /* * 解析當前的訪問路徑,得到要進行動作 */ function _parsePath(){ list($path, $param) = explode("?", $_SERVER["REQUEST_URI"]); $pos = strrpos($path, "/"); $this->action = substr($path, $pos 1); } /* * 通過動作$action,解析得到該$action要用到的controler檔案的路徑 */ function _getControlerFile(){ $this->controlerFile = "./Controler/".$this->action."Controler.php"; if(!file_exists($this->controlerFile)) die("Controler檔案名稱(".$this->controlerFile.")解析錯誤"); require_once $this->controlerFile; } /* * 通過動作$action,解析得到該$action要用到的controler類名 */ function _getControlerClassname(){ $this->controlerClass = $this->action."Controler"; if(!class_exists($this->controlerClass)) die("Controler類名(".$this->controlerClass.")解析錯誤"); } /* * 調用controler,執行controler的動作 */ function go(){ $c = new $this->controlerClass(); $c->control(); } } ?> |
“PHP整合你的網站入口”的更多相關文章 》
愛J2EE關注Java邁克爾傑克遜視頻站JSON線上工具
http://biancheng.dnbcw.info/php/324024.html pageNo:15