gpt4 book ai didi

php - 如何在 PHP 中获取函数的参数名称?

转载 作者:可可西里 更新时间:2023-10-31 22:08:33 24 4
gpt4 key购买 nike

我正在寻找一种反向的 func_get_args()。我想知道定义函数时参数是如何命名的。这样做的原因是我不想在使用通过方法作为参数传递的设置变量时重复自己:

public function myFunction($paramJohn, $paramJoe, MyObject $paramMyObject)
{
$this->paramJohn = $paramJohn;
$this->paramJoe = $paramJoe;
$this->paramMyObject = $paramMyObject;
}

理想情况下我可以这样做:

foreach (func_get_params() as $param)
$this->${$param} = ${$param};
}

这是矫枉过正、愚蠢的想法,还是有更好的方法来实现这一点?

最佳答案

你可以使用 Reflection :

$ref = new ReflectionFunction('myFunction');
foreach( $ref->getParameters() as $param) {
echo $param->name;
}

因为你在类里面使用它,你可以使用 ReflectionMethod而不是 ReflectionFunction:

$ref = new ReflectionMethod('ClassName', 'myFunction');

这是一个工作示例:

class ClassName {
public function myFunction($paramJohn, $paramJoe, $paramMyObject)
{
$ref = new ReflectionMethod($this, 'myFunction');
foreach( $ref->getParameters() as $param) {
$name = $param->name;
$this->$name = $$name;
}
}
}

$o = new ClassName;
$o->myFunction('John', 'Joe', new stdClass);
var_dump( $o);

上面的var_dump() prints :

object(ClassName)#1 (3) {
["paramJohn"]=>
string(4) "John"
["paramJoe"]=>
string(3) "Joe"
["paramMyObject"]=>
object(stdClass)#2 (0) {
}
}

关于php - 如何在 PHP 中获取函数的参数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17455043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com