Heim 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;;
Nach dem Login kopieren

【相关教程推荐】

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

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Verwenden Sie Go-Zero, um eine verteilte Aufgabenverteilung und -planung zu implementieren Verwenden Sie Go-Zero, um eine verteilte Aufgabenverteilung und -planung zu implementieren Jun 22, 2023 am 09:06 AM

Angesichts der rasanten Entwicklung des Internetgeschäfts und des allmählich steigenden Geschäftsvolumens reicht die Datenmenge, die ein einzelner Server verarbeiten kann, bei weitem nicht aus, um den Bedarf zu decken. Um den Anforderungen hoher Parallelität, hoher Verfügbarkeit und hoher Leistung gerecht zu werden, entstand je nach Bedarf eine verteilte Architektur. In einer verteilten Architektur ist die Aufgabenverteilung und -planung eine sehr wichtige Komponente. Die Qualität der Aufgabenverteilung und -planung wirkt sich direkt auf die Leistung und Stabilität des gesamten Systems aus. Hier stellen wir vor, wie Sie das Go-Zero-Framework verwenden, um eine verteilte Aufgabenverteilung und -planung zu implementieren. 1. Verteilte AufgabenverteilungAufgabenverteilung

So deaktivieren Sie die Funktion „Zum Anzeigen des Desktops klicken' in macOS So deaktivieren Sie die Funktion „Zum Anzeigen des Desktops klicken' in macOS Nov 23, 2023 pm 02:31 PM

Standardmäßig blendet macOSSonoma alle aktiven Fenster aus, wenn Sie auf Ihren Desktop-Hintergrund klicken. Dies ist praktisch, wenn Sie auf Ihrem Desktop eine Menge Dateien haben, auf die Sie zugreifen müssen. Wenn Sie dieses Verhalten jedoch als störend empfinden, gibt es eine Möglichkeit, es abzustellen. Apples neuestes macOS Sonoma Mac-Betriebssystem verfügt über eine neue Option namens „Klicken Sie auf das Hintergrundbild, um den Desktop anzuzeigen“. Diese standardmäßig aktivierte Option kann besonders nützlich sein, wenn Sie häufig mehrere Fenster geöffnet haben und auf Dateien oder Ordner auf Ihrem Desktop zugreifen möchten, ohne die Fenster minimieren oder verschieben zu müssen. Wenn die Funktion aktiviert ist und Sie auf das Desktop-Hintergrundbild klicken, werden alle geöffneten Fenster vorübergehend zur Seite gewischt, sodass Sie direkt auf den Desktop zugreifen können. Sobald Sie fertig sind, können Sie es wieder tun

Geplante Aufgaben und Planung von MySQL: So verwenden Sie MySQL, um effiziente geplante Aufgaben und Planung zu erreichen Geplante Aufgaben und Planung von MySQL: So verwenden Sie MySQL, um effiziente geplante Aufgaben und Planung zu erreichen Jun 15, 2023 pm 07:47 PM

MySQL ist derzeit eine der am weitesten verbreiteten relationalen Datenbanken. Sie bietet zahlreiche Funktionen und Tools, darunter geplante Aufgaben und Planungsfunktionen. In der tatsächlichen Entwicklung müssen wir häufig bestimmte Aufgaben regelmäßig ausführen, z. B. das Sichern von Datenbanken, das Erstellen von Berichten usw. Zu diesem Zeitpunkt können die geplanten Aufgaben und Planungsfunktionen von MySQL hilfreich sein. In diesem Artikel stellen wir die geplanten Aufgaben und Planungsfunktionen von MySQL vor und zeigen, wie Sie sie verwenden, um effiziente geplante Aufgaben und Planungen zu erreichen. 1. MySQLs geplante Aufgaben und Planungsfunktionen MySQL

So implementieren Sie verteilte geplante Aufgaben und Planung in PHP-Microservices So implementieren Sie verteilte geplante Aufgaben und Planung in PHP-Microservices Sep 25, 2023 pm 05:54 PM

So implementieren Sie verteilte geplante Aufgaben und Planung in PHP-Microservices. In der modernen Microservice-Architektur sind verteilte geplante Aufgaben und Planung sehr wichtige Komponenten. Sie können Entwicklern dabei helfen, geplante Aufgaben in mehreren Microservices einfach zu verwalten, zu planen und auszuführen und so die Systemzuverlässigkeit und Skalierbarkeit zu verbessern. In diesem Artikel wird die Verwendung von PHP zur Implementierung verteilter Timing-Aufgaben und Planung vorgestellt und Codebeispiele als Referenz bereitgestellt. Verwenden eines Warteschlangensystems Um verteilte geplante Aufgaben und Planung zu implementieren, müssen Sie zunächst ein zuverlässiges Warteschlangensystem verwenden. Warteschlangensysteme können

So verwenden Sie das Hyperf-Framework für die geplante Aufgabenplanung So verwenden Sie das Hyperf-Framework für die geplante Aufgabenplanung Oct 20, 2023 am 08:01 AM

So verwenden Sie das Hyperf-Framework für die Planung geplanter Aufgaben. Hyperf ist ein leistungsstarkes und flexibles PHP-Framework, das auf der Swoole-Erweiterung basiert. Es bietet zahlreiche Funktionen und Komponenten, einschließlich eines leistungsstarken Planers für geplante Aufgaben. In diesem Artikel wird die Verwendung des Hyperf-Frameworks für die Planung geplanter Aufgaben vorgestellt und spezifische Codebeispiele bereitgestellt. Installieren Sie das Hyperf-Framework. Zuerst müssen wir das Hyperf-Framework installieren. Sie können den Composer-Befehl zum Installieren verwenden: Composerc

Analyse des Linux-Prozessprioritätsplanungsmechanismus Analyse des Linux-Prozessprioritätsplanungsmechanismus Mar 15, 2024 am 09:36 AM

Titel: Analyse des Linux-Prozessprioritätsplanungsmechanismus Das Linux-Betriebssystem ist ein Open-Source-Betriebssystem mit leistungsstarken Multitasking-Funktionen. In Linux-Systemen ist die Prozessplanung sehr wichtig, was sich auf die Leistung und Reaktionsgeschwindigkeit des Systems auswirkt. Um die Prozessplanung zu verbessern, implementiert das Linux-System einen Prozessprioritätsplanungsmechanismus. 1. Prozesspriorität Im Linux-System hat jeder Prozess eine Priorität, mit der die Planungsreihenfolge des Prozesses im System bestimmt wird. Der Wertebereich der Priorität liegt üblicherweise bei 0~

C-Programm zur Schleifenplanung C-Programm zur Schleifenplanung Sep 25, 2023 pm 05:09 PM

Wir erhalten dann Prozesse mit ihrer entsprechenden Burst-Zeit und ihrem Zeitquantum und die Aufgabe, die durchschnittliche Wartezeit und die durchschnittliche Durchlaufzeit zu ermitteln und das Ergebnis anzuzeigen. Was ist RoundRobin-Scheduling? Roundrobin ist ein CPU-Planungsalgorithmus, der speziell für Timesh entwickelt wurde

So implementieren Sie die verteilte Aufgabenzuweisung und -planung in PHP-Microservices So implementieren Sie die verteilte Aufgabenzuweisung und -planung in PHP-Microservices Sep 24, 2023 pm 12:37 PM

So implementieren Sie die verteilte Aufgabenzuweisung und -planung in PHP-Microservices. Die verteilte Aufgabenzuweisung und -planung ist eine häufige Anforderung beim Erstellen umfangreicher Anwendungen. Als häufig verwendete Webentwicklungssprache kann PHP auch zum Aufbau einer Microservice-Architektur und zur Implementierung der verteilten Aufgabenzuweisung und -planung verwendet werden. In diesem Artikel wird die Implementierung der verteilten Aufgabenzuweisung und -planung in PHP-Mikrodiensten vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Verteilte Aufgabenzuweisung Bei der verteilten Aufgabenzuweisung veröffentlicht ein Aufgabenherausgeber Aufgaben in einer Aufgabenwarteschlange und dann mehrere Aufgaben

See all articles