Maison >cadre php >PensezPHP >ThinkPHP détecte si les variables d'URL et les règles de routage correspondent
ThinkPHP détecte si les variables d'URL et les règles de routage correspondent
咔咔original
2020-12-01 12:27:202041parcourir
«
Cet article continue d'expliquer le code source du routage. Si vous voyez cet article, vous pouvez d'abord lire les articles de routage écrits auparavant, soit un total de deux articles.
”
Avant-propos
Après avoir interprété le code source de routage des deux premiers articles , je pense que tout le monde a une bonne compréhension du routage. J'ai une certaine compréhension.
Cet article continuera à expliquer l'analyse du code source de routage ThinkPHP, qui constitue également la fin du contenu de routage. Il y aura un article sur la planification du routage plus tard. J'espère que tout le monde a une bonne compréhension de la barre de routage. !
Concernant le routage, Kaka estime que c'est le point central le plus difficile de la lecture du code source dans l'ensemble du framework, et cela prend également beaucoup de temps.
Parce qu'il existe de nombreuses classes imbriquées, pourquoi ne pas suivre le bon sens, comme $this->group.
Bien qu'il s'agisse d'une simple relation d'appel, de nombreuses fonctions sont exécutées dans le code source.
Le code source général pensera que ce groupe est une classe simple. En fait, ce n'est pas le cas. Le résultat final renvoyé est un peu surprenant.
Tout ce qui concerne le framework doit donc être soigneusement compris. La lecture du code source vise principalement à améliorer votre compréhension du framework et de ses idées de conception.
Suivez toujours les étapes, regardez d'abord l'organigramme d'exécution de la machine minière, puis vous pourrez lire l'article clairement en fonction de l'organigramme.
Toutes les lectures de code source au cours de la période ultérieure seront directement ajoutées ici pour supplément.
1. Détecter les paramètres de groupe de fusion de routage, vérifier le routage de groupe
À la fin de l'article précédent, nous avons parlé de la position dans l'image ci-dessous. Cette position est encore vide pour le moment. Cette position vide est le paramètre de regroupement de fusion qui sera abordé ensuite. La fusion des paramètres consiste en fait à fusionner les paramètres de routage et les paramètres par défaut.
Afin de montrer clairement le processus d'exécution, Kaka a encerclé le processus d'exécution. Fichier d'exécution :
La détection d'itinéraire renvoie un objet Dispatch
Détecter le routage du nom de domaine
Détecter le routage des alias-> regroupement Routage
Fusionner les paramètres de regroupement
Vous pouvez voir ceci Le titre de cette section est Détection des paramètres de routage et vérification du routage des paquets, il y a donc encore beaucoup de contenu sur la détection du routage.
C'est juste que Kaka se concentre uniquement sur la fusion des paramètres de groupe et la vérification du routage de groupe. Enfin, les autres contenus ne pénètrent pas dans toute la ligne, nous n'en discuterons donc pas en profondeur.
Le prochain article parlera d'une partie du contrôleur, mais tout ne sera pas écrit !
Fusionner les paramètres de regroupement
Parlons d'abord de ce contenu.
Avant de regarder cet élément de contenu, vous devez vérifier l'attribut $this->parent pour voir à quoi cette valeur est définie.
Vous pouvez savoir qu'il s'agit de la classe instanciée de Domain en l'imprimant avec debug_backtrace().
Passons ensuite à la méthode mergeGroupOptions pour une explication détaillée.
Obtenez la définition du paramètre de routage. Si le paramètre de routage n'existe pas, c'est 'merge_rule_regex' => bool(false). Quoi qu'il en soit, le paramètre de routage sera ajouté à la fin. 🎜>
Paramètres de groupe de fusion : $this->mergeOptions : paramètres de routage 'après', 'modèle', 'en-tête', 'réponse', 'append', 'middleware'
Fusionner les paramètres via array_merge
et verrouiller le paramètre lockOption
et renvoyer le résultat fusionné, et enfin renvoyer le résultat $ this->option
Renvoyer les résultats comme indiqué ci-dessous
Résultats de retour finaux
Résultats de retourGénéralement, nous n'utilisons pas de paramètres de routage. Nous le mentionnons simplement ici pour faire savoir à tout le monde qu'il existe. Si vous insistez pour l'utiliser, assurez-vous de lire clairement le numéro de version, sinon vous rencontrerez A. beaucoup de problèmes.
Paramètres de routage pris en charge
Fichier : thinkphp/library/think/route/ RuleGroup .php Ligne 183.
Ici, nous devons d'abord clarifier quelle est la valeur de la variable $rules.
Détecter le routage des paquets
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:
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