PHP整合你的網站入口

來源:互聯網
上載者:User

簡介:這是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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.