• PHP整合你的站点入口


    简介:这是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
  • 相关阅读:
    oracle客户端plsql设置字符集
    命令导入导出oracle库
    java初级开发一系列的工具安装配置
    docker学习笔记-5.数据共享
    docker学习笔记-4.harbor
    flask学习笔记2
    socket编程学习
    docker学习笔记-3.docker镜像制作
    docker学习笔记-2.docker镜像制作
    docker学习笔记-1.docker基础
  • 原文地址:https://www.cnblogs.com/ooooo/p/2254986.html
Copyright © 2020-2023  润新知