имена аргументов функции

В PHP Рассмотрим эту функцию:

function test($name, $age) {} 

Мне нужно как-то извлечь имена параметров (для автоматической генерации пользовательских документов), чтобы я мог сделать что-то вроде:

 get_func_argNames('test'); 

и он вернется:

 Array['name','age'] 

Возможно ли это в PHP?

Вы можете использовать Reflection :

 function get_func_argNames($funcName) { $f = new ReflectionFunction($funcName); $result = array(); foreach ($f->getParameters() as $param) { $result[] = $param->name; } return $result; } print_r(get_func_argNames('get_func_argNames')); //output Array ( [0] => funcName ) 

Это старый вопрос, который я встречал, когда искал что-то другое, кроме Reflection, но я выброшу свою текущую реализацию, чтобы она могла помочь кому-то другому. Использование array_map

Для метода

  $ReflectionMethod = new \ReflectionMethod($class, $method); $params = $ReflectionMethod->getParameters(); $paramNames = array_map(function( $item ){ return $item->getName(); }, $params); 

Для функции

  $ReflectionFunction = new \ReflectionFunction('preg_replace'); $params = $ReflectionFunction->getParameters(); $paramNames = array_map(function( $item ){ return $item->getName(); }, $params); echo '<pre>'; var_export( $paramNames ); 

Выходы

 array( '0' => 'regex', '1' => 'replace', '2' => 'subject', '3' => 'limit', '4' => 'count' ) 

Ура,

В дополнение к ответу Тома Хейга, если вам нужно получить значение по умолчанию дополнительных атрибутов:

 function function_get_names($funcName){ $attribute_names = []; if(function_exists($funcName)){ $fx = new ReflectionFunction($funcName); foreach ($fx->getParameters() as $param){ $attribute_names[$param->name] = NULL; if ($param->isOptional()){ $attribute_names[$param->name] = $param->getDefaultValue(); } } } return $attribute_names; } 

Полезно для проверки типа переменной.

func_get_args

 function my($aaa, $bbb){ var_dump( func_get_args() ); } my("something","something"); //result: array('aaa' => 'something', 'bbb' => 'something'); 

также существуют другие глобальные функции: get_defined_vars() , который возвращает не только функцию, но и все переменные.

@Tom Haigh, или сделать это более стильно:

 function getArguments( $funcName ) { return array_map( function( $parameter ) { return $parameter->name; }, (new ReflectionFunction($funcName))->getParameters() ); } // var_dump( getArguments('getArguments') );