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

2016-02-19 18:44 16 1 收藏

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是用PHP开始你的MVC (一)整合你的站点入口,一起来学习了解下吧!

【 tulaoshi.com - 编程语言 】

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

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

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

大家也许经常在网上看到这样的路径(http://www.aaa.com/aaa/bbb/aaa?id=5),让人不解,这样的网站的实现方式有几种可能性:

    1、隐藏文件的扩展名,对这种做法的好处,众说纷纭,不过个人觉得没有必要;
    2、用了网站的重定向规则,实现虚拟路径;
    3、强制文件解析的方式,实现虚拟路径。

用第23种方法可以实现网站的统一接口,合理的整合网站,更好的体现网站的安全性和架构,用这两种方式的网站大多是使用“MVC”模式构

建和实现的。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)


下面是一个例子

访问路径如下:
      ..../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 

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

文件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();
    }
}

来源:http://www.tulaoshi.com/n/20160219/1618833.html

延伸阅读
宝宝爱哭,肯定是有他自己的理由的,你了解吗? 婴儿 哭的原因很多,肚子饿了要哭,有毛病的时候要哭,撒娇、淘气的时候也会哭。不过,一般说来,身体健康、发育正常和得到母爱的婴儿都是不怎么爱哭的。 心理 学家曾经发现,平时能够充分得到亲人抚爱的婴儿,就哭得少,并且到一岁时候,他们在日常生活中也很少有额外的要求。因为他...
孕期黄疸不全是黄疸肝炎 怀孕乃家庭中一件大事。孕妇稍有异常,不但小两口紧张,连三家两代人都惊慌不已。若孕妇出现黄疸,一连串的问题便提出来了:是不是血型不合,还是有胎毒,胎儿安全吗?生下来会不会是个畸形儿?保肝药该如何吃? 请莫过于紧张,妊娠黄疸并非全是黄疸肝炎。 1883年,阿菲德医生诊治了一名女病人,在首次怀孕的最后...
标签: PHP
  今天做照着例子做,发现其中有很多错误的地方,为了让广大菜鸟兄弟更好的理解,我把修改后的文件给大家看看。 数据结构如下: CREATE TABLE ad ( url varchar(100) NOT NULL, banner varchar(150) NOT NULL, alt varchar(100), priority int(4) DEFAULT '1' NOT NULL, )   增加广告的文件 ***************putad.php...
18个毁掉孩子的错误教养方式 以下的一些做法会摧毁孩子的自尊,将孩子贬到卑微的地位上。具体方法如下: 1.让孩子觉得自己什么都不行,没人赏识他。 例如学习不行,长相不行,交际不行,干家务不行,马虎,粗心,让家人为他受累……总之,他没有行的地方。 2.经常拿比他“行”的人刺激他。 例如这种话要时常挂在嘴...
红旗登录管理器及用法 请到以下连接下载。xxx.tar.bz2bao.tar.bz2 详细的使用办法:用法输入命令:kcmshell ksplashthememgr,然后添加就可以。好了,看看吧。 环境:红旗4.1。 推荐使用方法: 1/把登录画面换成这个 2/输入kcmshell kdm,把显示图片换成“头”那个图,把背景换成下面的大图 3/把桌面换成那个带字的大图,把它复制到/root/usr/sh...

经验教程

740

收藏

68
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部