Zend Framework路由器用法实例详解

本文实例讲述了Zend Framework路由器用法。分享给大家供大家参考,具体如下:

路由是一个过程,在这个过程中它去除URI的端点(跟着基本URL的URI部分),并将其分解成参数来决定哪个模块、哪个控制器和哪个动作应该接受请求。

模块、控制器、动作、及其参数被打包到Zend_Controller_Request_Http对象。

使用路由器

为了正确使用路由器,必须对其进行初始化操作。

创建路由器可以通过前端控制器实例的getRouter()方法来实现。该方法不需要任何参数,执行该方法可以返回一个Zend_Controller_Router_Rewrite对象。

创建路由器之后,需要添加一些用户定义的路由,该操作可以通过Zend_Controller_Router_Rewrite对象的addRoute()方法来实现。

代码:

<?php
/**
演示创建路由器的过程
*/
require_once 'Zend/Controller/Front.php';    //引用Zend_Controller_Front.php
$ctrl = Zend_Controller_Front::getInstance();  //创建一个前端控制器
$router = $ctrl->getRouter();          //返回一个默认路由,前端控制器功能很强大啊
$router->addRoute('user',new Zend_Controller_Router_Route('user/:username',array('controller'=>'user','action'=>'info')));

4种基本路由

1.缺省路由

定义:缺省路由是存储在RewriteRouter中名为‘default'的简单Zend_Controller_Router_Route_Module对象。

2.标准框架路由

定义:Zend_Controller_Router_Route是标准的框架路由。

例子:

<?php
//定义标准框架路由
$route = new Zend_Controller_Router_Route('author/:username',
array(
  'controller'=>'profile',
  'action'=>'userinfo'
));
//向路由器中添加定义的路由
$router->addRoute('user',$route);

注:我表示我很晕,日志不好码啊,自己都不太懂。

3.静态路由

定义:特定的路由被设定成型Zend_Controller_Router_Route_Static。

例子:

<?php
//定义静态路由
$route = new Zend_Controller_Router_Route_Static(
'login',
array(
  'controller'=>'auth',
  'action'=>'login'
));
//向路由器中添加定义的路由
$router->addRoute('login',$route);

上述路由将匹配http://domain.com/login的URL,并将其分派到AuthController::loginAction()方法中。

4.正则表达式路由

Zend_Controller_Router_Route_Regex

案例:

<?php
//正则表达式路由
$route = new Zend_Controller_Router_Route_Regex(
  'archive/(\d+)',
  array(
    'controller'=>'archive',
    'action'=>'show'
  ));
//向路由器中添加定义的路由
$router->addRoute('archive',$route);

分析:

正则表达式路由定义的第一个参数中的动态部分(“/”后的内容)不再是一个变量,而是一个正则子模式。

在该例中,成功匹配http://domain.com/archive/2008之后,会返回如下结果值的数组。

$values = array(
1=>'2008',
'controller'=>'archive',
'action'=>'show'
);

后记:

我表示概念太多,很吃力。

更多关于zend相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《php优秀开发框架总结》、《Yii框架入门及常用技巧总结》、《ThinkPHP入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Zend Framework框架的PHP程序设计有所帮助。

(0)

相关推荐

  • Zend Framework前端控制器用法示例

    本文实例讲述了Zend Framework前端控制器用法.分享给大家供大家参考,具体如下: 常用方法 1.getInstance() 功能:用于获取前端控制器实例. 代码如下: <?php $front = Zend_Controller_Front::getInstance(); 执行上述代码,将创建一个前端控制器实例. 2.setControllerDirectory() 功能:用于通知分发器到何处查找动作控制器action controller类文件. 3.getControllerDir

  • Zend Framework动作控制器用法示例

    本文实例讲述了Zend Framework动作控制器用法.分享给大家供大家参考,具体如下: 动作控制器简介 为了使用Zend_Controller_Action类,需要在实际控制器类中把它子类化. 代码: <?php class FooController extends Zend_Controller_Action{ public function barAction(){ //do something } public function bazAction(){ //do something

  • ZendFramework2连接数据库操作实例

    本文实例讲述了ZendFramework2连接数据库操作.分享给大家供大家参考,具体如下: 相对于zf1,来说,zf2让我们对于数据库这方面的操作我的个人感觉是对于字段起别名简单了,但是对数据库的操作虽然配置写好的就基本不需要动了,但是还是比1的配置要繁琐, 还是那句话,大家可以去看看源码... Module.php 里面添加 public function getServiceConfig() { return array( 'factories' => array( 'Student\Mod

  • Zend Framework入门应用实例详解

    本文实例讲述了Zend Framework入门应用.分享给大家供大家参考,具体如下: .htaccess文件 .htaccess文件用来实现URL重置,即当用户访问某资源时,会将其重新定位到指定的文件下. 代码示例: RewriteEngine on RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php 其中,行1表示重置引擎打开,行2表示当访问除js.ico.gif.jpg.png.css以外的文件时, 都将被重置到index.php文件下. 注

  • Zend Framework数据库操作技巧总结

    本文实例总结了Zend Framework数据库操作.分享给大家供大家参考,具体如下: Zend_Db数据库知识 例子: Model文件: $this->fetchAll("is_jian=1","id DESC",0,2)->toArray(); //根据is_jian=1,按id倒序排列取前2条记录当第一个参数为null时,则直接按id倒序排列ASC为正序. 路由文件: $video=new Video();//实例化数据库类 $this->v

  • Zend Framework实现自定义过滤器的方法

    本文实例讲述了Zend Framework实现自定义过滤器的方法.分享给大家供大家参考,具体如下: 创建自定义的过滤器 代码: <?php require_once 'Zend/Filter/Interface.php'; class MyFilter implements Zend_Filter_Interface{ public function filter($value){ $badlist = array("梨","草莓","苹果"

  • Zend Framework处理Json数据方法详解

    本文实例讲述了Zend Framework处理Json数据的方法.分享给大家供大家参考,具体如下: JSON分隔符及意义 {}    用于实现对象的包含,对象都包含在大括号中 ,    逗号用于分隔对象的不同属性,或者数组的元素 []    用于存放数组,数组将存放在中括号中 :    用于表示键/值对的值,冒号前为键,冒号后为该键的值 JSON示例 { "addressbook":{ "name":"Mary Lebow", "add

  • Zend Framework框架中实现Ajax的方法示例

    本文实例讲述了Zend Framework框架中实现Ajax的方法.分享给大家供大家参考,具体如下: 开发平台:Windows XP SP2 测试平台:FreeBSD 7.0 开发工具:Netbeans 6.1 使用框架:Zend Framework 1.5.2 数据库: MySQL 5.0.51a 所需的数据库表和ZF相关目录以及文件: 一.表: mysql> select * from news; +----+-------+---------------------+ | id | tit

  • Zend Framework使用Zend_Loader组件动态加载文件和类用法详解

    本文实例讲述了Zend Framework使用Zend_Loader组件动态加载文件和类的方法.分享给大家供大家参考,具体如下: 加载文件 Zend_Loader组件可以实现对文件的加载功能,还可以判断文件是否可读. 这两个功能分别由Zend_loader::loadFile()方法与Zend_loader::isReadable()方法来实现. 动态加载是可以将变量所指代的文件进行加载的过程.当需要加载的文件为用户输入或是某个方法的参数时,通过传统的加载方法会很难对文件进行加载. 通过动态加载

  • 解决了Ajax、MySQL 和 Zend Framework 的乱码问题

    问题: 在 Google Map 上用 Ajax 以 get 方式向服务器传递数据时,服务器端显示为 url 乱码, Zend Framework 向 MySQL 存储数据为乱码,但是提取出来又是正常中文字体, MySQL 中输入中文,显示在 PHP 网页上为乱码. 解决方式: 1. Ajax 的 url 编码需要转换,我使用的如下函数: public function js_unescape($str) { $ret = ''; $len = strlen($str); for ($i = 0

  • WINDOWS + WAMP + Zend Framework 配置步骤分享

    WINDOWS 下WAMP环境下 的 Zend Framework 配置 1,安装WampServer 下载WAMPSERVER并安装,在本例中,安装在C:\wamp下. 2 安装Zend Framework 解压缩 Zend Framework 压缩包中 \library\ 至 C:\wamp\library (这里面没有library目录,要自己建一个) 3 开启支持rewrite module 编辑 httpd.conf. - 编辑 C:\wamp\bin\apache\Apache2.2

  • Zend Framework分发器用法示例

    本文实例讲述了Zend Framework分发器用法.分享给大家供大家参考,具体如下: 分发是取得请求对象,提取其中的模块名.控制器名.动作名以及可选参数,然后实例化控制器并调用其中动作的整个过程. 如果其中的模块.控制器或动作没有找到,将使用默认值. Zend_Controller_Dispatcher_Standard类指定每个控制器和动作的默认值为index,模块的默认值为default. 该类允许开发者通过setDEfaultController()方法.setDefaultAction

随机推荐