我在寻找一种反向的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};
}
这是一个矫枉过正,是一个简单的愚蠢的想法,还是有一个更好的方法来实现这一点?
4条答案
按热度按时间l7wslrjt1#
您可以使用
Reflection
:因为你在一个类中使用这个函数,所以你可以用
ReflectionMethod
代替ReflectionFunction
:下面是一个工作示例:
其中上述
var_dump()
prints:3zwtqj6y2#
建立数组的程式码片段,该数组包含做为索引键的参数名称和做为Map值的参数值:
p3rjfoxz3#
虽然这不是不可能做到的,但通常使用另一种方法会更好。下面是一个关于SO的类似问题的链接:
How to get a variable name as a string in PHP?
你可以做的是在一个对象内传递所有的参数,而不是一个一个地传递它们。我假设你是在数据库中这样做的,你可能想读一下ORM。
nxagd54h4#
get_defined_vars将为您提供参数名称及其值,因此您可以