Php 如何获取方法的默认变量定义
使用PHP的ReflectionClass。这可能吗 我想得到一个方法和定义变量的列表,如果可能的话,还有它们的默认值Php 如何获取方法的默认变量定义,php,reflection,methods,Php,Reflection,Methods,使用PHP的ReflectionClass。这可能吗 我想得到一个方法和定义变量的列表,如果可能的话,还有它们的默认值 $reflection = new \ReflectionClass($var); $methods = $reflection->getMethods(\ReflectionMethod::IS_PUBLIC); print_r($methods); // only method names here :( 使用该方法。使用您的代码示例: $reflection =
$reflection = new \ReflectionClass($var);
$methods = $reflection->getMethods(\ReflectionMethod::IS_PUBLIC);
print_r($methods); // only method names here :(
使用该方法。使用您的代码示例:
$reflection = new \ReflectionClass($var);
$methods = $reflection->getMethods(\ReflectionMethod::IS_PUBLIC);
$methodParameters = array();
foreach ($methods as $method) {
$parameters = $method->getParameters();
foreach ($parameters as $parameter) {
$name = $method->getName() . '::' . $parameter->getName();
$methodParameters[$name] = null;
if ($parameter->isOptional()) {
$methodParameters[$name] = $parameter->getDefaultValue();
}
}
}
例如:
class a {
public function methodOne() {
}
public function methodTwo($param) {
}
public function methodThree($param = 'foo') {
}
}
$var = new a();
$reflection = new \ReflectionClass($var);
$methods = $reflection->getMethods(\ReflectionMethod::IS_PUBLIC);
$methodParameters = array();
foreach ($methods as $method) {
$parameters = $method->getParameters();
foreach ($parameters as $parameter) {
$name = $method->getName() . '::' . $parameter->getName();
$methodParameters[$name] = null;
if ($parameter->isOptional()) {
$methodParameters[$name] = $parameter->getDefaultValue();
}
}
}
var_dump($methodParameters);
// results in this array:
array(2) {
["methodTwo::param"]=>
NULL
["methodThree::param"]=>
string(3) "foo"
}
谢谢您应该将其作为答案发布,否则我将删除我的q:Phmmm,但我如何才能将方法名称传递给它<代码>数组($var,$method->name)似乎不起作用,因为它需要一个字符串…好吧,我发现,我必须使用ReflectionMethod而不是ReflectionFunction…只是想知道,参数列表是否总是按原始顺序返回?好问题,让我再做一点测试…一秒钟@Alex…看来参数是按顺序返回的