• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP整合你的站点入口_PHP

php 搞代码 4年前 (2022-01-25) 16次浏览 已收录 0个评论

大家也许经常在网上看到这样的路径(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的配置方式用的)

forcetype application/x-httpd-php


文件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($p本@文来源gao($daima.com搞@代@#码(网5搞gaodaima代码ath, $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();
}
}
?>


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP整合你的站点入口_PHP
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址