用PHP开始你的MVC (一)整合你的站点入口

原创 2004年04月29日 20:55:00


这是一篇介绍如何用php来实现MVC模式开发的文件。关于MVC模式的技术文章网上随处可以,所以这篇文件将不再讲述这种模式的优缺点(实际

上是我说不清楚),子讲他的php技术实现。并且在以后的系列文章中也是以讲技术为主。

一、实现统一的网站入口(在MVC中调用Controler层的方法,也就是控制层)


大家也许经常在网上看到这样的路径(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 mvc的单点入口程序

对新手而言,我觉得了解mvc的入门知识还是要从这个单点入口开始,至于mvc的model  control 和view还不是首先需要解释的,因为你没有必要完全遵循mvc的所有要求,但是单点入口个人认为是...
  • ljguo212
  • ljguo212
  • 2013年05月21日 23:54
  • 796

开发自己PHP MVC框架(一)

本教程翻译自John Squibb 的Build a PHP MVC Framework in an Hour,但有所改动,原文地址:http://johnsquibb.com/tutorials ...
  • fengqiuzhihua
  • fengqiuzhihua
  • 2012年09月02日 23:38
  • 31134

用PHP开始你的MVC (一)整合你的站点入口

用PHP开始你的MVC (一)整合你的站点入口 这是一篇介绍如何用php来实现MVC模式开发的文件。关于MVC模式的技术文章网上随处可以,所以这篇文件将不再讲述这种模式的优缺点(实际上是我说不清楚),...
  • bjbs_270
  • bjbs_270
  • 2004年11月26日 13:59
  • 1031

用PHP开始你的MVC (一)整合你的站点入口

这是一篇介绍如何用php来实现MVC模式开发的文件。这是一篇介绍如何用php来实现MVC模式开发的文件。关于MVC模式的技术文章网上随处可以,所以这篇文件将不再讲述这种模式的优缺点(实际上是我说不清楚...
  • srg23
  • srg23
  • 2006年06月11日 11:33
  • 638

用PHP开始你的MVC (一)整合你的站点入口

版权声明:CSDN是本Blog托管服务提供商。如本文牵涉版权问题,CSDN不承担相关责任,请版权拥有者直接与文章作者联系解决。这是一篇介绍如何用php来实现MVC模式开发的文件。关于MVC模式的技术文...
  • caaclxf
  • caaclxf
  • 2004年09月23日 08:55
  • 461

由于你的站点的PHP配置存在限制,程序尝试用FTP进行目录操作,你必须在后台指定FTP相关的变量!

http://diannaodiy.net/dreamweaver/1036.htm 今天在使用织梦的程序,在数据库还原之后生成栏目和内容的时候出现错误,提示:“由于你的站点的PHP配置存在...
  • fengjiexyb
  • fengjiexyb
  • 2015年01月06日 10:44
  • 1288

整合你的站点入口

整合你的站点入口  大家也许经常在网上看到这样的路径(http://www.aaa.com/aaa/bbb/aaa?id=5),让人不解,这样的网站的实现方式有几种可能性:1、隐藏文件的扩展名,对这种...
  • psyl
  • psyl
  • 2005年03月19日 13:56
  • 1087

PHP整合你的站点入口

http://www.souzz.net 2005-12-08 文章出处:搜站长搜集  ...
  • lyd518
  • lyd518
  • 2007年10月16日 11:00
  • 412

隐藏了网站的入口文件INDEX.PHP

今天使用伪静态将网站的入口文件index.php隐藏起来了,按照thinkphp官方手册上面讲的方法,我试了N次都没有成功,我也找不出是什么原因,最后实在没得办法只得自己手动一条一条的写.htacce...
  • load_life
  • load_life
  • 2012年02月01日 23:33
  • 974

谈谈你对MVC的理解

MVC是Model—View—Controler的简称。即模型—视图—控制器。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。      MVC中的模型、视图、控制器它们分别担负着...
  • miachen520
  • miachen520
  • 2016年08月28日 17:06
  • 2000
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用PHP开始你的MVC (一)整合你的站点入口
举报原因:
原因补充:

(最多只允许输入30个字)