首页 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脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

利用go-zero实现分布式任务分发与调度 利用go-zero实现分布式任务分发与调度 Jun 22, 2023 am 09:06 AM

随着互联网业务的快速发展以及渐渐增加的业务量,单台服务器所能处理的数据量已经远远不能满足需求。为了满足高并发、高可用、高性能的要求,分布式架构应运而生。在分布式架构中,任务的分发和调度是一个非常关键的组成部分。任务分发和调度的好坏将直接影响整个系统的性能和稳定性。在这里,我们将介绍如何利用go-zero框架实现分布式任务分发和调度。1.分布式任务分发任务分发

如何在 macOS 中禁用'单击桌面显示”功能 如何在 macOS 中禁用'单击桌面显示”功能 Nov 23, 2023 pm 02:31 PM

默认情况下,macOSSonoma会在您单击桌面壁纸时隐藏所有活动窗口。如果您倾向于在桌面上有一堆需要访问的文件,这将很方便。但是,如果您发现这种行为令人抓狂,则有一种方法可以将其关闭。Apple最新的macOSSonomaMac操作系统有一个新选项,称为“单击壁纸以显示桌面”。默认情况下启用,如果您倾向于打开多个窗口,并且想要访问桌面上的文件或文件夹,而不必最小化或移动窗口,则该选项可能特别有用。启用该功能并单击桌面墙纸后,所有打开的窗口都会暂时被扫到一边,从而直接访问桌面。完成后,您可以再次

MySql的定时任务与调度:如何使用MySQL实现高效的定时任务和调度 MySql的定时任务与调度:如何使用MySQL实现高效的定时任务和调度 Jun 15, 2023 pm 07:47 PM

MySQL是目前使用最广泛的关系型数据库之一,它提供了众多的功能和工具,其中包括定时任务和调度功能。在实际开发中,我们经常需要定时执行某些任务,比如备份数据库、生成报表等,这时MySQL的定时任务和调度功能就能派上用场了。在本文中,我们将介绍MySQL的定时任务和调度功能,以及如何使用它们实现高效的定时任务和调度。一、MySQL的定时任务和调度功能MySQL

如何在PHP微服务中实现分布式定时任务和调度 如何在PHP微服务中实现分布式定时任务和调度 Sep 25, 2023 pm 05:54 PM

如何在PHP微服务中实现分布式定时任务和调度在现代的微服务架构中,分布式定时任务和调度是非常重要的组成部分。它们能够帮助开发者轻松地管理、调度和执行多个微服务中的定时任务,提高系统的可靠性和可扩展性。本文将介绍如何使用PHP来实现分布式定时任务和调度,并提供代码示例供参考。使用队列系统为了实现分布式定时任务和调度,首先需要使用一个可靠的队列系统。队列系统能够

如何使用Hyperf框架进行定时任务调度 如何使用Hyperf框架进行定时任务调度 Oct 20, 2023 am 08:01 AM

如何使用Hyperf框架进行定时任务调度Hyperf是一个基于Swoole扩展的高性能、灵活的PHP框架。它提供了丰富的功能和组件,其中包括一个强大的定时任务调度器。本文将介绍如何使用Hyperf框架进行定时任务调度,并提供具体的代码示例。安装Hyperf框架首先,我们需要安装Hyperf框架。可以使用Composer命令来进行安装:composerc

Linux进程优先级调度机制解析 Linux进程优先级调度机制解析 Mar 15, 2024 am 09:36 AM

标题:Linux进程优先级调度机制解析Linux操作系统是一个开源的操作系统,具有强大的多任务处理能力。在Linux系统中,进程的调度是非常重要的,它影响着系统的性能和响应速度。为了更好地进行进程调度,Linux系统实现了进程优先级调度机制。1.进程优先级在Linux系统中,每个进程都有一个优先级,用来决定进程在系统中的调度顺序。优先级的取值范围通常是0~

循环调度的C程序 循环调度的C程序 Sep 25, 2023 pm 05:09 PM

给定然后进程及其相应的突发时间和时间量,任务是找到平均等待时间和平均周转时间并显示结果。什么是循环调度?循环是专门为时间设计的 CPU 调度算法

如何在PHP微服务中实现分布式任务分配和调度 如何在PHP微服务中实现分布式任务分配和调度 Sep 24, 2023 pm 12:37 PM

如何在PHP微服务中实现分布式任务分配和调度在构建大型应用程序时,分布式任务分配和调度是一个常见的需求。PHP作为一种常用的网页开发语言,也可以用于构建微服务架构,实现分布式任务分配和调度。本文将介绍如何在PHP微服务中实现分布式任务分配和调度,并提供了具体的代码示例。一、分布式任务分配在分布式任务分配中,有一个任务发布者将任务发布到任务队列中,然后由多个任

See all articles