实例示范thinkphp控制器如何调度
这篇文章主要介绍了thinkphp控制器调度使用示例,需要的朋友可以参考下
1.如何通过地址栏参数来得到模块名称和控制器名称(即使在有路由和开了重写模块的情况下)
2.tp是如何实现前置,后置方法功能模块,,和如何执行带参数的方法?
php系统自带的 ReflectionClass,ReflectionMethod 类,可以反射用户自定义类的中属性,方法的权限和参数等信息,通过这些信息可以准确的控制方法的执行
ReflectionClass主要用的方法:
hasMethod(string) 是否存在某个方法
getMethod(string) 获取方法
ReflectionMethod 主要方法:
getNumberOfParameters() 获取参数个数
getParamters() 获取参数信息
3.代码演示
代码如下:
<?php class IndexAction{ public function index(){ echo 'index'."\r\n"; } public function test($year=2012,$month=2,$day=21){ echo $year.'--------'.$month.'-----------'.$day."\r\n"; } public function _before_index(){ echo __FUNCTION__."\r\n"; } public function _after_index(){ echo __FUNCTION__."\r\n"; } } //执行index方法 $method = new ReflectionMethod('IndexAction','index'); //进行权限判断 if($method->isPublic()){ $class = new ReflectionClass('IndexAction'); //执行前置方法 if($class->hasMethod('_before_index')){ $beforeMethod = $class->getMethod('_before_index'); if($beforeMethod->isPublic()){ $beforeMethod->invoke(new IndexAction); } } $method->invoke(new IndexAction); //执行后置方法 if($class->hasMethod('_after_index')){ $beforeMethod = $class->getMethod('_after_index'); if($beforeMethod->isPublic()){ $beforeMethod->invoke(new IndexAction); } } } //执行带参数的方法 $method = new ReflectionMethod('IndexAction','test'); $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 'parameters is not match!';
【相关教程推荐】
1. php编程从入门到精通全套视频教程
2. php从入门到精通
3. bootstrap教程

Outils d'IA chauds

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

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

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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

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 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

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 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 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.

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 à

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 ?
