【发布时间】:2012-08-30 23:00:23
【问题描述】:
不知道如何在不讨论 C 中的预处理器的情况下问这个问题,但我会尝试:
PHP 中有没有办法将变量的名称用作字符串或值。
这样,而不是像这样调用函数,
$somevar = 'whatever';
fun('somevar', $somevar);
你可以这样称呼它:
fun(<magic:$somevar>, $somevar);
甚至,我敢说,像这样:
fun($somevar);
并且 fun() 本身会推导出变量的值('whatever')和名称('somevar')。 (在 C 语言中,可以使用预处理器#define 来完成。)
上面的"magic" 当然是我正在寻找的 PHP 中魔术语法的占位符,它将帮助我做到这一点。我想它可以用eval()以某种方式制作?但是人们一直告诉我不要使用 eval。
有人暗示内省可能会以某种方式解决问题。欢迎任何线索。
【问题讨论】:
-
路人有一些关于ReflectionParameters的提示,但是你删除了你的cmets。
-
你想要完成什么?
-
@Amigable 您是否正在寻找类似将变量名称作为值返回的东西?
-
@sberry,更简洁的代码,我有很多变量名总是与那个字符串相同。两次输入相同的内容是愚蠢的。
-
@goldenparrot,从描述上看,技术上是的,但实际上不完全是,如果我输入错误会发生什么,fun(ltrim('$somevarr', '$'), $somevar);是PHP根本没有提供任何帮助。如果第一个参数只是一个变量,解析器会警告 $somevarr 未定义。
标签: php variables introspection