时间:2021-07-01 10:21:17 帮助过:38人阅读
....../test/*******/Bad ....../test/*******/Good (其中的"******"可以用任何字符串替换,"......."是你的web路径) |
|--.htaccess |-- test |-- Application.php |-- Controler/GoodControler.php |-- Controler/BadControler.php |
forcetype application/x-httpd-php |
/*------------------------------------- * test.php * * 作为你的网站的入口的文件 * 用来初始化和入口 * 调用执行Controler的调用 * -------------------------------------*/ require "Application.php"; $aa = new Application(); $aa->parse(); $aa->go(); ?> |
/*------------------------------------- * GoodControler.php * * 用来控制 url=/test/Good 来的访问 * -------------------------------------*/ class GoodControler{ /* * 控制类的调用方法,唯一的报漏给外部的接口 */ function control(){ echo "this is from GoodControler url=*********/test/Good"; } } ?> |
/*------------------------------------- * BadControler.php * * 用来控制 url=/test/Bad 来的访问 * -------------------------------------*/ class BadControler{ /* * 控制类的调用方法,唯一的报漏给外部的接口 */ function control(){ echo "this is from GoodControler url=*********/test/Bad"; } } ?> |
/*------------------------------------- * 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(); } } ?> |