Maison php教程 php手册 实例示范thinkphp控制器如何调度

实例示范thinkphp控制器如何调度

Jun 06, 2016 pm 08:24 PM
调度

这篇文章主要介绍了thinkphp控制器调度使用示例,需要的朋友可以参考下

1.如何通过地址栏参数来得到模块名称和控制器名称(即使在有路由和开了重写模块的情况下)

2.tp是如何实现前置,后置方法功能模块,,和如何执行带参数的方法?

php系统自带的 ReflectionClass,ReflectionMethod 类,可以反射用户自定义类的中属性,方法的权限和参数等信息,通过这些信息可以准确的控制方法的执行

ReflectionClass主要用的方法: 
hasMethod(string)  是否存在某个方法
getMethod(string)   获取方法

ReflectionMethod 主要方法: 
getNumberOfParameters()  获取参数个数
getParamters()  获取参数信息

3.代码演示

 代码如下:

<?php 
class IndexAction{
 public function index(){
   echo &#39;index&#39;."\r\n";
 }
 public function test($year=2012,$month=2,$day=21){
   echo $year.&#39;--------&#39;.$month.&#39;-----------&#39;.$day."\r\n";
 }
 public function _before_index(){
   echo __FUNCTION__."\r\n";
 }
 public function _after_index(){
   echo __FUNCTION__."\r\n";
 }
}
//执行index方法
$method = new ReflectionMethod(&#39;IndexAction&#39;,&#39;index&#39;);
//进行权限判断
if($method->isPublic()){
 $class = new ReflectionClass(&#39;IndexAction&#39;);
 //执行前置方法
 if($class->hasMethod(&#39;_before_index&#39;)){
  $beforeMethod = $class->getMethod(&#39;_before_index&#39;);
  if($beforeMethod->isPublic()){
   $beforeMethod->invoke(new IndexAction);
  }
 }
 $method->invoke(new IndexAction);
 //执行后置方法
 if($class->hasMethod(&#39;_after_index&#39;)){
  $beforeMethod = $class->getMethod(&#39;_after_index&#39;);
  if($beforeMethod->isPublic()){
   $beforeMethod->invoke(new IndexAction);
  }
 }
}
//执行带参数的方法
$method = new ReflectionMethod(&#39;IndexAction&#39;,&#39;test&#39;);
$params = $method->getParameters();
foreach($params as $param ){
 $paramName = $param->getName();
 if(isset($_REQUEST[$paramName]))
  $args[] = $_REQUEST[$paramName];
 elseif($param->isDefaultValueAvailable())
  $args[] = $param->getDefaultValue();
}
if(count($args)==$method->getNumberOfParameters())
 $method->invokeArgs(new IndexAction,$args);
else
 echo &#39;parameters is not match!&#39;;
Copier après la connexion

【相关教程推荐】

1. php编程从入门到精通全套视频教程
2. php从入门到精通 
3. bootstrap教程

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)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

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)

Comment désactiver la fonctionnalité Click to Desktop Show dans macOS Comment désactiver la fonctionnalité Click to Desktop Show dans macOS Nov 23, 2023 pm 02:31 PM

Par défaut, macOSSonoma masque toutes les fenêtres actives lorsque vous cliquez sur le fond d'écran de votre bureau. Ceci est pratique si vous avez tendance à avoir un grand nombre de fichiers sur votre bureau auxquels vous devez accéder. Cependant, si vous trouvez ce comportement exaspérant, il existe un moyen de le désactiver. Le dernier système d'exploitation macOS Sonoma Mac d'Apple dispose d'une nouvelle option appelée "Cliquez sur le fond d'écran pour afficher le bureau". Activée par défaut, cette option peut être particulièrement utile si vous avez tendance à ouvrir plusieurs fenêtres et que vous souhaitez accéder à des fichiers ou des dossiers sur votre bureau sans avoir à réduire ou déplacer les fenêtres. Lorsque la fonctionnalité est activée et que vous cliquez sur le fond d'écran du bureau, toutes les fenêtres ouvertes sont temporairement balayées, permettant un accès direct au bureau. Une fois terminé, vous pouvez à nouveau

Utilisez go-zero pour mettre en œuvre la distribution et la planification distribuées des tâches Utilisez go-zero pour mettre en œuvre la distribution et la planification distribuées des tâches Jun 22, 2023 am 09:06 AM

Avec le développement rapide des activités Internet et l'augmentation progressive du volume d'affaires, la quantité de données qu'un seul serveur peut traiter est loin de répondre à la demande. Afin de répondre aux exigences de haute concurrence, de haute disponibilité et de hautes performances, une architecture distribuée a émergé au fur et à mesure que les temps l'exigent. Dans une architecture distribuée, la répartition et la planification des tâches sont un élément très critique. La qualité de la répartition et de la planification des tâches affectera directement les performances et la stabilité de l'ensemble du système. Ici, nous présenterons comment utiliser le framework go-zero pour implémenter la distribution et la planification distribuées des tâches. 1. Distribution distribuée des tâchesDistribution des tâches

Comment implémenter des tâches planifiées distribuées et la planification dans les microservices PHP Comment implémenter des tâches planifiées distribuées et la planification dans les microservices PHP Sep 25, 2023 pm 05:54 PM

Comment implémenter des tâches planifiées et une planification distribuées dans les microservices PHP Dans l'architecture de microservices moderne, les tâches planifiées et la planification distribuées sont des composants très importants. Ils peuvent aider les développeurs à gérer, planifier et exécuter facilement des tâches planifiées dans plusieurs microservices, améliorant ainsi la fiabilité et l'évolutivité du système. Cet article explique comment utiliser PHP pour implémenter des tâches et une planification de synchronisation distribuée, et fournit des exemples de code pour référence. Utilisation d'un système de file d'attente Afin de mettre en œuvre des tâches planifiées et une planification distribuées, vous devez d'abord utiliser un système de file d'attente fiable. Les systèmes de file d'attente peuvent

Tâches planifiées et planification de MySql : comment utiliser MySQL pour réaliser des tâches planifiées et une planification efficaces Tâches planifiées et planification de MySql : comment utiliser MySQL pour réaliser des tâches planifiées et une planification efficaces Jun 15, 2023 pm 07:47 PM

MySQL est actuellement l'une des bases de données relationnelles les plus utilisées. Elle fournit de nombreuses fonctions et outils, notamment des tâches planifiées et des fonctions de planification. Dans le développement réel, nous devons souvent effectuer certaines tâches régulièrement, telles que sauvegarder des bases de données, générer des rapports, etc. À l'heure actuelle, les tâches planifiées et les fonctions de planification de MySQL peuvent s'avérer utiles. Dans cet article, nous présenterons les tâches planifiées et les fonctions de planification de MySQL, et comment les utiliser pour réaliser des tâches planifiées et une planification efficaces. 1. Tâches planifiées et fonctions de planification de MySQL MySQL

Comment utiliser le framework Hyperf pour la planification de tâches planifiées Comment utiliser le framework Hyperf pour la planification de tâches planifiées Oct 20, 2023 am 08:01 AM

Comment utiliser le framework Hyperf pour la planification de tâches planifiées Hyperf est un framework PHP hautes performances et flexible basé sur l'extension Swoole. Il fournit un riche ensemble de fonctionnalités et de composants, notamment un puissant planificateur de tâches planifiées. Cet article explique comment utiliser le framework Hyperf pour la planification de tâches planifiées et fournit des exemples de code spécifiques. Installer le framework Hyperf Tout d'abord, nous devons installer le framework Hyperf. Vous pouvez utiliser la commande Composer pour installer : composerc

Comment implémenter l'allocation et la planification distribuées des tâches dans les microservices PHP Comment implémenter l'allocation et la planification distribuées des tâches dans les microservices PHP Sep 24, 2023 pm 12:37 PM

Comment implémenter l'allocation et la planification distribuées des tâches dans les microservices PHP L'allocation et la planification distribuées des tâches sont une exigence courante lors de la création d'applications à grande échelle. En tant que langage de développement Web couramment utilisé, PHP peut également être utilisé pour créer une architecture de microservices et mettre en œuvre une allocation et une planification distribuées des tâches. Cet article présentera comment implémenter l'allocation et la planification distribuées des tâches dans les microservices PHP, et fournira des exemples de code spécifiques. 1. Allocation de tâches distribuée Dans l'allocation de tâches distribuée, un éditeur de tâches publie des tâches dans une file d'attente de tâches, puis plusieurs tâches.

Analyse du mécanisme de planification des priorités des processus Linux Analyse du mécanisme de planification des priorités des processus Linux Mar 15, 2024 am 09:36 AM

Titre : Analyse du mécanisme de planification des priorités des processus Linux Le système d'exploitation Linux est un système d'exploitation open source doté de puissantes capacités multitâches. Dans les systèmes Linux, la planification des processus est très importante car elle affecte les performances et la vitesse de réponse du système. Afin d'améliorer la planification des processus, le système Linux implémente un mécanisme de planification prioritaire des processus. 1. Priorité des processus Dans le système Linux, chaque processus a une priorité, qui est utilisée pour déterminer l'ordre de planification du processus dans le système. La plage de valeurs de priorité est généralement de 0 à

Programme C pour la planification de boucles Programme C pour la planification de boucles Sep 25, 2023 pm 05:09 PM

Nous sommes donnés avec ensuite les processus avec leur heure de rafale et leur quantum de temps correspondants et la tâche consiste à trouver le temps d'attente moyen et le temps d'exécution moyen et à afficher le résultat. Qu'est-ce que la planification Round Robin ?

See all articles