Heim Backend-Entwicklung PHP-Tutorial thinkphp控制器调度使用示例_PHP

thinkphp控制器调度使用示例_PHP

Jun 01, 2016 am 11:56 AM
调度

ThinkPHP

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

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

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

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

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

3.代码演示

复制代码 代码如下:
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!';

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

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

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

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

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

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~

Anwendung und Praxis von Redis bei der verteilten Aufgabenplanung Anwendung und Praxis von Redis bei der verteilten Aufgabenplanung Jun 20, 2023 am 09:32 AM

Anwendung und Praxis von Redis bei der verteilten Aufgabenplanung Mit der Ausweitung des Geschäftsumfangs ist die Aufgabenplanung zu einer der Schlüsseltechnologien in verteilten Systemen geworden. Neben vielen Tools zur Aufgabenplanung kann auch Redis als Speicher-Middleware leistungsstarke Unterstützung bieten. In diesem Artikel werden die Anwendung und Praxis von Redis bei der verteilten Aufgabenplanung unter Aspekten wie Redis als Infrastruktur der verteilten Aufgabenplanung, Redis-Warteschlange und Aufgabenplanungsdesign vorgestellt. 1. Redis als Infrastruktur für die verteilte AufgabenplanungRed

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

See all articles