`

CakePHP中Router的机制和使用方法

阅读更多

一、典型CakePHP处理 Request 的流程


      当人浏览网站,发出请求,.htaccess文件将request映射到webroot/index.php文件,此文件中主要处理:1.常量的定义;2.包含bootstrap.php文件;3.调用 dispather() 函数。

 

二、认识 Router 与 Dispatcher、Controller 之间的关系

      (1). 路由(Router)从URL中解释并提取出这次请求的参数:控制器(controller)、动作(action)以及其他在这次请求中关联影响到得业务逻辑的所有其他参数信息;

      (2).使用路由后,请求的URL被映射到一个控制器的动作中(在特定的一个控制器类得一个方法)


   **** 部分函数解析 ****

   1. Router::parse($url)

       根据提供的url,解析出对应的controller、action、params 的数组。所依据的准则:默认路由、新定义创建的路由规则。

 

 

   2. Router::getArgs($args, $options = array()) 将passed params 转换为参数

 

三、CakePHP 中Router 配置

     CakePHP 源码包中 router.php 文件:



  自定义路由:

connect() 函数的三个参数:1. 你希望匹配的URL值;2. 自定义的路由元素的默认值;3. 帮助该路由器匹配的URL元素的正则规则。

基本格式用于Router定义:

 

Router::connect(
    'URL',
    array('paramName' => 'defaultValue'),
    array('paramName' => 'matchingRegex')
);

 

 

  注:

(1) 定义URL类型。URL通常由斜杠分割的,但是也会包含一些通配符(*)或者自定义路由元素(URL元素以冒号为前缀) 用通配符来匹配URL的类型。特殊化的路由元素允许你为你的控制器actions收集参数。

(2) 当请求出现时,这些路由元素的值会在控制器的 $this->params存在。这不同于命名参数 (named parameter),所以注意区别:命名参数 (/controller/action/name:value) 存在于 $this->passedArgs中,而自定义路由元素存在于 $this->params

 (3) 默认路由:/:controller、 /:controller/:action/*

 

    这样的配置会返回什么呢???

    写两个例子看一下:


 

四、 CakePHP 中Router 的应用

  (1). 简单应用:


  (2). 高级应用:




      SlugRoute的解析方法很简单。首先我们调用父类parse()函数,可得到解析正则表达式的路径。任何空的或false的返回都会导致我们解析路径失败(路径不匹配),只有当我们得到有效的路径(对于post带有匹配的参数).自从CakeRoute:parse()将已经创造了参数,所以我们不需要修改参数,返回他们如果没有目标存在或返回错误。

      app/config/routes.php引用此router类:

 

五、 CakePHP 中Router 配置文件的弊端

       CakePHP的缺省实现中,我们并不用去设置Route,系统会遵循/controller/action/param的形式去解析URL。但是很多时候这样的URL并不友好,于是我们就要设置自定义的Route,其结果就是Route配置文件不断膨胀。值得注意的是PHP对于每个请求都要重建运行环境,而对于一次请求而言,Route配置文件里最后使用的只是一条配置而已,为了这一条配置,却不得不重复解析整个庞大的Route配置文件,无疑是个巨大的负担。

       REST风格是解决这个问题的好办法,采用REST风格的架构方式,资源的URL形式相对确定,操作方式由HTTP方法而定,因此Route配置文件会迅速瘦身。



       REST软件架构是一个抽象的概念,是一种为了实现这一互联网的超媒体分布式系统的行动指南。利用任何的技术都可以实现这种理念。而实现这一软件架构最著名的就是HTTP协议。通常我们把REST也写作为REST/HTTP,在实际中往往把REST理解为基于HTTPREST软件架构,或者更进一步把RESTHTTP看作为等同的概念。

 

近期本人开通了微信订阅号“CakePHP学习”,欢迎大家的关注。


 

  • 大小: 37.6 KB
  • 大小: 16.2 KB
  • 大小: 13.8 KB
  • 大小: 10.1 KB
  • 大小: 44.8 KB
  • 大小: 31.6 KB
  • 大小: 13.5 KB
  • 大小: 9.4 KB
  • 大小: 42 KB
  • 大小: 59.9 KB
  • 大小: 87.4 KB
  • 大小: 17.2 KB
  • 大小: 2.8 KB
  • 大小: 31.3 KB
3
1
分享到:
评论

相关推荐

    cakephp中文手册API

    CakePHP内置了错误处理和日志记录机制,确保程序出错时能提供清晰的反馈,同时便于调试和追踪问题。 13. **安全(Security)**: 安全是Web开发的重要方面,CakePHP提供了许多安全特性,如CSRF防护、XSS防范、...

    cakephp中文手册

    本手册是针对CakePHP的中文版指南,对于学习和理解这个框架的中文使用者来说,是一份极其宝贵的资源。 在 CakePHP 中,开发者可以快速地搭建功能丰富的Web应用程序。其主要特点包括: 1. **快速开发**:CakePHP ...

    cakephp 中文手册

    2. **查询构造器**:通过ORM(对象关系映射),开发者可以使用链式方法构建复杂的SQL查询,无需直接编写SQL语句。 ### 四、验证和错误处理 1. **数据验证**:在模型层,可以设置数据验证规则,确保输入数据的完整...

    CakePHP使用ajax传值

    具体实现方法是:在控制器中使用iconv('utf-8', 'gb2312', $data['parameter'])来转换数据。 3. 路径问题的处理:在Ajax请求中,如果网站页面存在嵌套路径,那么在请求时需要注意URL路径的正确性。在CakePHP中,...

    CakePHP 1.2 API 中文文档

    **CakePHP 1.2 API 中文... CakePHP 1.2 API 中文文档覆盖了框架的主要组件、类库和方法,是开发者学习和使用该框架的重要参考资料。通过深入理解和实践这些知识点,开发者能够高效地构建稳定、可维护的PHP Web应用。

    cakephp--使用_CakePHP_的_Session_和_Request_Handler_组件

    ### 使用CakePHP的Session和Request Handler组件 #### Session组件概览 在CakePHP框架中,Session组件被设计用于管理用户的会话数据,确保网站能够识别并处理特定用户的状态。这在用户登录、购物车功能、个性化...

    CakePHP路由

    #### CakePHP中的路由机制 CakePHP提供了强大的路由系统,能够帮助开发者快速地设置和管理应用程序的URL结构。其核心方法是`Router::connect()`,它负责定义URL模式及其对应的控制器和动作。 #### `Router::connect...

    cakePHP 中文手册

    CakePHP有多个特点,这些特点让CakePHP成为了快速开发框架中的佼佼者之一。 1.活跃友好的社区 2.灵活的许可协议(Licensing) 3.兼容PHP4和PHP5 4.数据库交互和简单查询的集成 5.应用程序Scaffolding 6....

    cakephp 中文文档

    通过以上介绍,我们可以看出 CakePHP 不仅在基本的 MVC 架构上进行了优化,还提供了丰富的扩展机制,使得开发者能够根据实际需求灵活地构建和扩展应用程序。无论是新手还是经验丰富的开发者,都能够从中受益匪浅。

    cakephp中acl详解

    CakePHP的ACL机制为开发者提供了强大的权限管理和访问控制功能,通过ACOs和AROs的组合,可以轻松地控制用户对应用资源的访问。理解并熟练运用ACL,能够帮助你构建更安全、更具定制化的Web应用。

    cakephp 框架书籍 英文版

    - **Vendor Packages**:探讨了如何在CakePHP中使用外部依赖包。 #### 十一、Deployment(部署) - **检查安全性**:提醒开发者注意在部署过程中可能存在的安全漏洞。 - **设置文档根目录**:指导如何正确设置...

    cakephp中文手册.pdf

    在 CakePHP 中,MVC模式被实现得非常直观和易于使用。例如,控制器类通常放在`app/Controller`目录下,模型类位于`app/Model`,而视图文件则位于`app/View`。 **MVC 模式** 虽然手册建议在阅读前了解MVC的基本概念...

    cakephp 1.2版本API

    在实际开发中,结合API文档中的示例和说明,开发者可以快速上手并熟练掌握CakePHP 1.2的使用。尽管此版本已不再是最新的,但其稳定性和广泛的社区支持使其在许多项目中仍被广泛采用。了解和掌握这个版本的API,将对...

    CakePHP中文手册

    **蛋糕PHP(CakePHP)**...通过深入学习这本**CakePHP中文手册**,开发者可以掌握使用CakePHP进行高效Web开发的技巧和最佳实践,从而提升开发效率和应用质量。无论是初学者还是经验丰富的开发者,都可以从中受益匪浅。

    cakephp框架源码

    Model层,CakePHP使用ActiveRecord模式,每个Model类代表数据库中的一个表。ORM(对象关系映射)使得开发者可以以面向对象的方式操作数据库,如find()方法用于查询数据,save()用于保存数据。此外,CakePHP的关联...

    最简单的方法来安装CakePHP

    标题中的“最简单的方法来安装CakePHP”表明我们将探讨如何以最简便的方式在你的开发环境中设置和安装CakePHP,这是一个非常流行的PHP开发框架。CakePHP以其MVC(模型-视图-控制器)架构模式,丰富的功能和易于学习...

    cakephp-2.4.1

    在本文中,我们将深入探讨CakePHP 2.4.1版本的特点和使用技巧,帮助开发者更好地理解和应用这一强大的工具。 1. **MVC架构**:MVC是一种设计模式,将业务逻辑、数据和用户界面分离,使得代码更加清晰、易于维护。在...

Global site tag (gtag.js) - Google Analytics