
/
获取一个函数的依赖
@param string|callable $func
@param array $param 调用方法时所需参数 形参名就是key值
@return array 返回方法调用所需依赖
/
function getFucntionParameter($func,$param=[]) {
if(!is_array($param)) {
$param = [$param];
}
$ReflectionFunc = new \ReflectionFunction($func);
$depend = array();
foreach($ReflectionFunc->getParameters() as $value) {
if(isset($param[$value->name])) {
$depend[] = $param[$value->name];
}elseif($value->isDefaultValueAvailable()){
$depend[] = $value->getDefaultValue();
}else{
$tmp = $value->getClass();
if(is_null($tmp)) {
throw new \Exception("Function parameters can not be getClass {$class}");
}
$depend[] = $this->get($tmp->getName());
}
}
return $depend;
}
function test($a,$b=20) {
echo $a,',',$b;
}
$depend = getFucntionParameter('test',['a'=>30,'b'=>40]);
call_user_func_array('test',$depend); // 30,40
上面的函数是我开发的框架的容器的方法。
php提供了很完整的反射机制。不但可以反射函数,还可以反射方法,反射类构造函数。
<
$aa=0;
function ch($b){
$b=$b+3;
return $b;
}
echo ch($aa);
>
$result = Reflection::export(new ReflectionClass('example'), true);
var_dump($result);
从打印的结果中筛选出你想要的值
<php
function get_caller_info() {
$c = '';
$file = '';
$func = '';
$class = '';
$trace = debug_backtrace();
if (isset($trace[2])) {
$file = $trace[1]['file'];
$func = $trace[2]['function'];
if ((substr($func, 0, 7) == 'include') || (substr($func, 0, 7) == 'require')) {
$func = '';
}
} else if (isset($trace[1])) {
$file = $trace[1]['file'];
$func = '';
}
if (isset($trace[3]['class'])) {
$class = $trace[3]['class'];
$func = $trace[3]['function'];
$file = $trace[2]['file'];
} else if (isset($trace[2]['class'])) {
$class = $trace[2]['class'];
$func = $trace[2]['function'];
$file = $trace[1]['file'];
}
if ($file != '') $file = basename($file);
$c = $file ": ";
$c = ($class != '') ":" $class "->" : "";
$c = ($func != '') $func "(): " : "";
return($c);
}
如果单纯的获取b某四个连续的数组元素的话,可以直接使用数组 *** 作函数array_slice(array array, int offset [,int length]),这个函数的意思是:返回数组一部分,从键offset开始,到offse+length位置结束。
如果是选取特定的某四个元素组的话,则只需遍历一遍该数组,然后按需索取即可。有需要的话欢迎追问哦,望采纳。
以上就是关于php有没有什么函数可以获取一个方法中的参数名和参数类型的全部的内容,包括:php有没有什么函数可以获取一个方法中的参数名和参数类型的、php 如何获取函数中的值、php ReflectionFunction 如何获取类中的函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)