自定义PHP 框架,ZF框架Controllers自定义Action_PHP教程

前端控制器是MVC组建中的苦力,因为它要实例化对象、触发事件、建立默认的行为等,它的主要目的是处理所有进入应用的请求。前端控制器的设计模式被应用于不同的MVC框架中,我们在Zend Framework中指代的前端控制器(Front Controller)实际上是指Zend_Controller_Front类,因为该类实现了前端控制器的模式;另一定注意的是,前端控制器设计是单例模式(Singleton),这也就意味着它实现了单例设计模式,也就是仅仅只能有一个实例化的前端控制器,即我们不能直接实例化Front Controller,而是拿取一个。

下面我们实现一个简单的controller跳转与分发。

在controllers文件夹里建立了IndexController.php,还有在view文件夹里建立了index.phtml 文件,在地址栏输入http://localhost/NowaMagicFrame1.0/可以浏览。

registry = Zend_Registry::getInstance();

$this->view = $this->registry['view'];

$this->view->baseUrl = $this->_request->getBaseUrl();

}

public function indexAction()

{

//这里给变量赋值,在index.phtml模板里显示

$this->view->bodyTitle = 'NowaMagic Frame 1.0';

echo $this->view->render('index.phtml');//显示模版

}

/**

* 新闻

*

*/

public function newsAction(){

//这里给变量赋值,在news.phtml模板里显示

$this->view->bodyTitle = 'NowaMagic Frame 新闻';

echo $this->view->render('news.phtml');//显示模版

}

}

?>

现在我想访问news页面,就可以通过IndexContriller来访问了,因为它里面有newsAction()这个方法可以实现转发。具体访问方式为http://localhost/NowaMagicFrame1.0/index/news/

但是这个URL看起来并不如想象中好,比较理想的URL看起来应该这样:http://localhost/NowaMagicFrame1.0/news/

怎么实现呢?我们需要建立一个NewsController.php

registry = Zend_Registry::getInstance();

$this->view = $this->registry['view'];

$this->view->baseUrl = $this->_request->getBaseUrl();

}

/**

* 标签首页

*

*/

function indexAction(){

echo $this->view->render('news.phtml');

}

}

?>

在这个文件中加个indexAction即可。

http://www.bkjia.com/PHPjc/752462.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/752462.htmlTechArticle前端控制器是MVC组建中的苦力,因为它要实例化对象、触发事件、建立默认的行为等,它的主要目的是处理所有进入应用的请求。前端控制...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的 PHP MVC 框架的示例: 1. 首先,你需要创建一个名为 index.php 的文件,在其中定义常量和引入必要的文件: ```php <?php // 定义常量 define('APP_PATH', realpath(__DIR__) . '/'); define('CONTROLLER_PATH', APP_PATH . 'controllers/'); define('MODEL_PATH', APP_PATH . 'models/'); define('VIEW_PATH', APP_PATH . 'views/'); // 引入必要的文件 require_once(APP_PATH . 'core/Controller.php'); require_once(APP_PATH . 'core/Model.php'); require_once(APP_PATH . 'core/View.php'); ``` 2. 创建一个名为 Controller.php 的文件,并定义一个名为 Controller 的类,该类包含一个默认的 index 方法: ```php <?php class Controller { public function index() { echo 'Hello World!'; } } ``` 3. 创建一个名为 Model.php 的文件,并定义一个名为 Model 的类: ```php <?php class Model { // 在这里定义模型类的方法 } ``` 4. 创建一个名为 View.php 的文件,并定义一个名为 View 的类: ```php <?php class View { // 在这里定义视图类的方法 } ``` 5. 创建一个名为 routes.php 的文件,其中包含路由规则: ```php <?php $routes = array( '/' => 'Controller@index', '/about' => 'Controller@about', '/contact' => 'Controller@contact' ); ``` 6. 最后,在 index.php 文件中添加路由和控制器的代码: ```php <?php // 引入路由规则 require_once(APP_PATH . 'routes.php'); // 获取请求的 URL $request_url = $_SERVER['REQUEST_URI']; // 查找路由规则 foreach ($routes as $route => $controller_action) { // 如果请求的 URL 匹配路由规则 if ($route === $request_url) { // 解析控制器和方法名 list($controller_name, $action_name) = explode('@', $controller_action); // 创建控制器实例并调用方法 require_once(CONTROLLER_PATH . $controller_name . '.php'); $controller = new $controller_name; $controller->$action_name(); exit; } } // 如果没有匹配的路由规则,则显示 404 页面 http_response_code(404); echo 'Page not found'; ``` 以上就是一个简单的 PHP MVC 框架的示例。当然,这只是一个示例,实际的 MVC 框架需要更多的功能和更复杂的实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值