PHP框架开发:四、控制器(Controller)的实现

上一节中对MVC设计模式进行了简单说明,本节我们来实现MVC的C--Controller。

  • 在application/controller文件夹中新建一个PHP文件,取名为HomeController.php,并添加如下代码:
<?php 
class HomeController
{
     function indexAction()
     {
     }
}
?>

这几行代码告诉我们要实现的控制器的结构,即:控制器文件(及类)的名字是以控制器名+后辍Controller组成的;控制器含有方法indexAction,这个方法名是由动作名+后辍Action组成的。

第二节中所说的,我们希望通过这样的URL: http://www.example.com/home/index 来访问到这个控制器(其实就是找到这个文件)。

下面来修改Rewrite.php文件以达到访问控制器的目的:

  • 修改library/LQP/Rewrite.php文件,添加一个dispatch方法,修改后文件内容如下:
<?php
/**
 * Description of Rewrite
 *
 * @author z
 */
class LQP_Rewrite
{
    protected
            $_urlPath,
            $_controllerName,
            $_actionName;

    private function  __construct() {
        $this->_urlPath = $_SERVER['REQUEST_URI'];
        $params = explode('/', $this->_urlPath);

        if($params)
            $this->_controllerName = empty($params[1])?'home':$params[1];
        if(count($params) > 1)
            $this->_actionName = empty ($params[2])?'index':$params[2];
    }

    /**
     * 执行相应控制器中的相应动作
     */
    function dispatch()
    {
        $controllerClassName = ucfirst($this->_controllerName)."Controller";
        $controllerFile = APP_CONTROLLER_DIR."/$controllerClassName.php";
require_once $controllerFile;//加载控制器文件 $controller = new $controllerClassName();//创建一个控制器的对象
$action = $this->_actionName; $action .= "Action"; $controller->$action();//调用控制器中相应的动作(方法) } }
主要代码已加了注释,应该不难理解了
为了使dispatch方法生效,及方便日后加载其它文件内容,我们建立一个library/LQP/Loader.php文件,内容如下:
<?php
require_once 'Rewrite.php';
$rewrite = new LQP_Rewrite();
$rewrite->dispatch();
?>
让客户程序加载Loader.php,在public/config/lib_config.php中加入一行:
require_once 'Loader.php';

经过上面的步骤,我们访问http://www.example.com/home/index时就会去执行indexAction方法了,当然如果访问http://www.example.com/home/register,框架程序就会去自动执行registerAction方法,此时我们只要在HomeController中加入一个名为registerAction的方法就可以了。

不管是indexAction,还是registerAction,根据MVC的思想都不应该直接来显示内容,显示内容是由V(View)来提供的,所以下一节我们将介绍本框架中视图(View)的实现。

总节:本节只是简单介绍的Controller,为的让你轻松的理解其原理,为了让框架更具有可用性,后续的章节中会逐渐加深、完善Controller。

 

 

本节源码:http://cid-8248e4adbf2b92f3.office.live.com/self.aspx/.Public/Lesson%204.rar

posted on 2010-07-27 19:11 BoolYang 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/XiaoG/archive/2010/07/27/1823602.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值