ThinkPHP控制器调度使用的例子
如何实现2.tp介词,后方法的功能模块,以及如何执行该方法的参数
ReflectionClass和PHP系统反射类可以反映用户定义类的属性,权限和参数的方法等。通过这些信息,我们可以精确地控制方法的执行。
采用的方法主要是reflectionclass:
是否有一种方法hasmethod(字符串)
方法(字符串)的获取方法
反射波法的主要方法:
GetNumberOfParameters()获取参数的数目
getparamters()获取参数信息
三.代码演示
复制代码代码如下所示:
< PHP
类的indexAction {
公共功能索引(){
echo'index。 ;
}
公共功能测试($ = 2012,月= 2,$ = 21){
echo $年。--------。美元一个月。-----------美元日。r;
}
公共功能_before_index(){
回声__function__。 ;
}
公共功能_after_index(){
回声__function__。r;
}
}
索引方法
$方法=新反射('indexaction ','index);
/权限判断
如果(合法>为()){
美元类=新ReflectionClass('indexaction);
主动方法
如果(合类-> hasmethod('_before_index ')){
beforemethod美元=美元类-> getMethod('_before_index);
如果($ beforemethod ->为()){
beforemethod美元->调用(新的indexAction);
}
}
$方法->调用(新的indexAction);
执行POST方法
如果(合类-> hasmethod('_after_index ')){
beforemethod美元=美元类-> getMethod('_after_index);
如果($ beforemethod ->为()){
beforemethod美元->调用(新的indexAction);
}
}
}
带有参数的实现方法
$方法=新反射('indexaction '测试');
$params = $方法->得到相机的参数();
foreach($params达参数){
美元美元paramName =参数> getName();
如果(isset($ _request { $ paramName }))
一美元{ } = { $ $ _request paramName };
($参数-> isdefaultvalueavailable())
$args{} = $param->getDefaultValue ();
}
如果(计数($ args)= = $方法-> getnumberofparameters())
方法:invokeargs美元(美元新的indexAction,args);
其他的
echo'parameters不匹配!;