Maison développement back-end tutoriel php CakePHP中Router的机制跟使用方法

CakePHP中Router的机制跟使用方法

Jun 13, 2016 pm 01:04 PM
cakephp controller rest router url

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')
);
Copier après la connexion

?

?

??注:

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

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

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

?

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

?? ?写两个例子看一下:


?

四、 CakePHP 中Router 的应用

??(1). 简单应用:


??(2). 高级应用:




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

?? ? ?<span style="font-size: 12.0pt;">app/config/routes.php</span><span style="font-size: 12.0pt;">中</span>引用此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看作为等同的概念。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

CakePHP travaillant avec la base de données CakePHP travaillant avec la base de données Sep 10, 2024 pm 05:25 PM

Travailler avec la base de données dans CakePHP est très simple. Nous comprendrons les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans ce chapitre.

Introduction à la fonction PHP — get_headers() : récupère les informations d'en-tête de réponse de l'URL Introduction à la fonction PHP — get_headers() : récupère les informations d'en-tête de réponse de l'URL Jul 25, 2023 am 09:05 AM

Introduction à la fonction PHP — get_headers() : Présentation de l'obtention des informations d'en-tête de réponse de l'URL : Dans le développement PHP, nous avons souvent besoin d'obtenir les informations d'en-tête de réponse de la page Web ou de la ressource distante. La fonction PHP get_headers() peut facilement obtenir les informations d'en-tête de réponse de l'URL cible et les renvoyer sous la forme d'un tableau. Cet article présentera l'utilisation de la fonction get_headers() et fournira quelques exemples de code associés. Utilisation de la fonction get_headers() : get_header

Pourquoi NameResolutionError(self.host, self, e) de e et comment le résoudre Pourquoi NameResolutionError(self.host, self, e) de e et comment le résoudre Mar 01, 2024 pm 01:20 PM

La raison de l'erreur est NameResolutionError(self.host,self,e)frome, qui est un type d'exception dans la bibliothèque urllib3. La raison de cette erreur est que la résolution DNS a échoué, c'est-à-dire le nom d'hôte ou l'adresse IP qui était. La tentative de résolution n'a pas pu être trouvée. Cela peut être dû au fait que l'adresse URL saisie est incorrecte ou que le serveur DNS est temporairement indisponible. Comment résoudre cette erreur Il peut y avoir plusieurs façons de résoudre cette erreur : Vérifiez si l'adresse URL saisie est correcte et assurez-vous qu'elle est accessible Assurez-vous que le serveur DNS est disponible, vous pouvez essayer d'utiliser la commande "ping" dans la ligne de commande pour tester si le serveur DNS est disponible Essayez d'accéder au site Web en utilisant l'adresse IP au lieu du nom d'hôte si vous êtes derrière un proxy

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Guide de l'utilisateur de React Router : Comment implémenter le contrôle de routage frontal Guide de l'utilisateur de React Router : Comment implémenter le contrôle de routage frontal Sep 29, 2023 pm 05:45 PM

Guide de l'utilisateur de ReactRouter : Comment implémenter le contrôle du routage frontal Avec la popularité des applications monopage, le routage frontal est devenu un élément important qui ne peut être ignoré. En tant que bibliothèque de routage la plus populaire de l'écosystème React, ReactRouter fournit des fonctions riches et des API faciles à utiliser, rendant la mise en œuvre du routage frontal très simple et flexible. Cet article expliquera comment utiliser ReactRouter et fournira quelques exemples de code spécifiques. Pour installer ReactRouter en premier, nous avons besoin

See all articles