실제로 유효한 사용 사례가 있습니다.
cacheVariable ($ var) 함수가 있습니다 (ok, 함수 캐시 ($ key, $ value)가 있지만 언급 한대로 함수를 갖고 싶습니다).
목적은 다음과 같습니다.
$colour = 'blue';
cacheVariable($colour);
...
// another session
...
$myColour = getCachedVariable('colour');
나는 함께 시도했다
function cacheVariable($variable) {
$key = ${$variable}; // This doesn't help! It only gives 'variable'.
// do some caching using suitable backend such as apc, memcache or ramdisk
}
나는 또한 시도했다
function varName(&$var) {
$definedVariables = get_defined_vars();
$copyOfDefinedVariables = array();
foreach ($definedVariables as $variable=>$value) {
$copyOfDefinedVariables[$variable] = $value;
}
$oldVar = $var;
$var = !$var;
$difference = array_diff_assoc($definedVariables, $copyOfDefinedVariables);
$var = $oldVar;
return key(array_slice($difference, 0, 1, true));
}
그러나 이것은 또한 실패합니다 ... :(
물론, 나는 캐시 ( 'colour', $ colour)를 계속 할 수는 있지만 게으르다.
그래서 내가 원하는 것은 변수가 함수에 전달 될 때 변수의 원래 이름을 얻는 함수입니다. 함수 안에는 내가 알 수있는 방법이 없습니다. 위의 두 번째 예제에서 get_defined_vars ()를 참조로 전달하면 (Jean-Jacques Guegan에게 감사드립니다) 다소 도움이되었습니다. 후자의 함수가 작동하기 시작했지만 여전히 로컬 변수 ( 'color'가 아닌 'variable') 만 반환했습니다.
get_func_args () 및 get_func_arg (), $ {}-constructs 및 key ()를 아직 사용하지 않았지만 실패 할 것으로 예상됩니다.