> php教程 > php手册 > 본문

php 反射实例应用-thinkphp 控制器调度

WBOY
풀어 주다: 2016-06-06 19:33:02
원래의
828명이 탐색했습니다.

无详细内容 无 ?phpclass 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__."\

<?php	
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!';

로그인 후 복사
php 反射实例应用-thinkphp 控制器调度
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!