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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

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 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Go-Zero를 사용하여 분산 작업 분배 및 스케줄링 구현 Go-Zero를 사용하여 분산 작업 분배 및 스케줄링 구현 Jun 22, 2023 am 09:06 AM

인터넷 비즈니스의 급속한 발전과 점차 증가하는 비즈니스 규모로 인해 단일 서버가 처리할 수 있는 데이터의 양은 수요를 충족시키기에는 턱없이 부족합니다. 높은 동시성, 고가용성, 고성능이라는 요구 사항을 충족하기 위해 시대가 요구하는 대로 분산 아키텍처가 등장했습니다. 분산 아키텍처에서 작업 분배 및 스케줄링은 매우 중요한 구성 요소입니다. 작업 분배 및 스케줄링의 품질은 전체 시스템의 성능과 안정성에 직접적인 영향을 미칩니다. 여기서는 go-zero 프레임워크를 사용하여 분산 작업 분배 및 스케줄링을 구현하는 방법을 소개합니다. 1. 분산 작업 분배작업 분배

macOS에서 Click to Desktop Show 기능을 비활성화하는 방법 macOS에서 Click to Desktop Show 기능을 비활성화하는 방법 Nov 23, 2023 pm 02:31 PM

기본적으로 macOSSonoma는 데스크탑 배경화면을 클릭하면 모든 활성 창을 숨깁니다. 이는 데스크탑에 액세스해야 하는 파일이 많은 경우에 편리합니다. 그러나 이 동작이 너무 짜증난다면 이를 끌 수 있는 방법이 있습니다. Apple의 최신 macOS Sonoma Mac 운영 체제에는 "바탕화면을 표시하려면 배경화면을 클릭하세요."라는 새로운 옵션이 있습니다. 기본적으로 활성화되어 있는 이 옵션은 여러 개의 창을 열어두고 창을 최소화하거나 이동하지 않고도 데스크탑의 파일이나 폴더에 액세스하려는 경우 특히 유용할 수 있습니다. 이 기능을 활성화하고 바탕 화면 배경 무늬를 클릭하면 열려 있는 모든 창이 일시적으로 사라지고 바탕 화면에 직접 액세스할 수 있습니다. 완료되면 다시 할 수 있습니다.

MySql의 예약된 작업 및 예약: MySQL을 사용하여 효율적인 예약된 작업 및 예약을 달성하는 방법 MySql의 예약된 작업 및 예약: MySQL을 사용하여 효율적인 예약된 작업 및 예약을 달성하는 방법 Jun 15, 2023 pm 07:47 PM

MySQL은 현재 가장 널리 사용되는 관계형 데이터베이스 중 하나이며 예약된 작업 및 예약 기능을 포함하여 다양한 기능과 도구를 제공합니다. 실제 개발에서는 데이터베이스 백업, 보고서 생성 등 특정 작업을 정기적으로 수행해야 하는 경우가 많습니다. 이때 MySQL의 예약 작업 및 예약 기능이 유용할 수 있습니다. 이 기사에서는 MySQL의 예약된 작업 및 예약 기능을 소개하고 이를 사용하여 효율적인 예약된 작업 및 예약을 달성하는 방법을 소개합니다. 1. 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 명령을 사용하여 설치할 수 있습니다.

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 마이크로서비스에서 분산 작업 할당 및 예약을 구현하는 방법을 소개하고 특정 코드 예제를 제공합니다. 1. 분산 작업 할당 분산 작업 할당에서는 작업 게시자가 작업을 작업 대기열에 게시한 다음 여러 작업을 게시합니다.

See all articles