首頁 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;;
登入後複製

【相关教程推荐】

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

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1317
25
PHP教程
1268
29
C# 教程
1244
24
如何在 macOS 中停用「按一下桌面顯示」功能 如何在 macOS 中停用「按一下桌面顯示」功能 Nov 23, 2023 pm 02:31 PM

預設情況下,macOSSonoma會在您按一下桌面桌布時隱藏所有活動視窗。如果您傾向於在桌面上有一堆需要存取的文件,這將很方便。但是,如果您發現這種行為令人抓狂,則有一種方法可以將其關閉。 Apple最新的macOSSonomaMac作業系統有一個新選項,稱為「點擊壁紙以顯示桌面」。預設情況下啟用,如果您傾向於打開多個窗口,並且想要訪問桌面上的文件或資料夾,而不必最小化或移動窗口,則該選項可能特別有用。啟用該功能並點擊桌面牆紙後,所有開啟的視窗都會暫時被掃到一邊,從而直接存取桌面。完成後,您可以再次

利用go-zero實現分散式任務分發與調度 利用go-zero實現分散式任務分發與調度 Jun 22, 2023 am 09:06 AM

隨著網路業務的快速發展以及漸漸增加的業務量,單一伺服器所能處理的資料量已經遠遠無法滿足需求。為了滿足高並發、高可用、高效能的要求,分散式架構應運而生。在分散式架構中,任務的分發和調度是一個非常關鍵的組成部分。任務分發和調度的好壞將直接影響整個系統的效能和穩定性。在這裡,我們將介紹如何利用go-zero框架實現分散式任務分發和調度。 1.分散式任務分發任務分發

MySql的定時任務與排程:如何使用MySQL實現高效率的定時任務與排程 MySql的定時任務與排程:如何使用MySQL實現高效率的定時任務與排程 Jun 15, 2023 pm 07:47 PM

MySQL是目前使用最廣泛的關聯式資料庫之一,它提供了眾多的功能和工具,其中包括定時任務和排程功能。在實際開發中,我們常常需要定時執行某些任務,例如備份資料庫、產生報表等,這時MySQL的定時任務和排程功能就能派上用場了。在本文中,我們將介紹MySQL的定時任務和調度功能,以及如何使用它們來實現高效的定時任務和調度。一、MySQL的計時任務與排程功能MySQL

如何使用Hyperf框架進行定時任務調度 如何使用Hyperf框架進行定時任務調度 Oct 20, 2023 am 08:01 AM

如何使用Hyperf框架進行定時任務調度Hyperf是一個基於Swoole擴展的高效能、靈活的PHP框架。它提供了豐富的功能和組件,其中包括一個強大的定時任務調度器。本文將介紹如何使用Hyperf框架進行定時任務調度,並提供具體的程式碼範例。安裝Hyperf框架首先,我們需要安裝Hyperf框架。可以使用Composer指令來進行安裝:composerc

如何在PHP微服務中實現分散式定時任務與調度 如何在PHP微服務中實現分散式定時任務與調度 Sep 25, 2023 pm 05:54 PM

如何在PHP微服務中實現分散式定時任務和調度在現代的微服務架構中,分散式定時任務和調度是非常重要的組成部分。它們能夠幫助開發者輕鬆管理、調度和執行多個微服務中的定時任務,提高系統的可靠性和可擴展性。本文將介紹如何使用PHP來實現分散式定時任務和調度,並提供程式碼範例供參考。使用佇列系統為了實現分散式定時任務和調度,首先需要使用一個可靠的佇列系統。隊列系統能夠

Redis在分散式任務排程的應用與實踐 Redis在分散式任務排程的應用與實踐 Jun 20, 2023 am 09:32 AM

Redis在分散式任務調度中的應用與實踐隨著業務規模的擴大,任務調度成為了分散式系統中的關鍵技術之一。而在眾多任務調度工具中,Redis作為一個儲存中間件,也能夠提供強大的支援。本文將從Redis作為分散式任務調度的基礎架構、Redis的佇列、任務調度器設計等方面,介紹Redis在分散式任務調度中的應用與實踐。一、Redis作為分散式任務調度的基礎架構Red

Linux進程優先權調度機制解析 Linux進程優先權調度機制解析 Mar 15, 2024 am 09:36 AM

標題:Linux程序優先調度機制解析Linux作業系統是一個開源的作業系統,具有強大的多工處理能力。在Linux系統中,進程的調度是非常重要的,它影響系統的效能和反應速度。為了更好地進行進程調度,Linux系統實作了進程優先權調度機制。 1.進程優先權在Linux系統中,每個行程都有一個優先權,用來決定行程在系統中的調度順序。優先權的取值範圍通常是0~

如何在PHP微服務中實現分散式任務分配與調度 如何在PHP微服務中實現分散式任務分配與調度 Sep 24, 2023 pm 12:37 PM

如何在PHP微服務中實現分散式任務分配和調度在建立大型應用程式時,分散式任務分配和調度是一個常見的需求。 PHP作為常用的網頁開發語言,也可以用來建構微服務架構,實現分散式任務分配和調度。本文將介紹如何在PHP微服務中實現分散式任務分配和調度,並提供了具體的程式碼範例。一、分散式任務分配在分散式任務分配中,有一個任務發布者將任務發佈到任務佇列中,然後由多個任

See all articles