मेरे पास वास्तव में इसके लिए वैध उपयोग का मामला है।
मेरे पास एक फ़ंक्शन कैशवेरिबल ($ var) है (ठीक है, मेरे पास एक फ़ंक्शन कैश ($ कुंजी, $ मूल्य) है, लेकिन मैं एक फ़ंक्शन का उल्लेख करना चाहूंगा)।
उद्देश्य यह करना है:
$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));
}
लेकिन यह भी विफल ... :(
ज़रूर, मैं कैश ('रंग', $ रंग) करना जारी रख सकता हूं, लेकिन मैं आलसी हूं, आप जानते हैं ...;)
इसलिए, मैं जो चाहता हूं वह एक फ़ंक्शन है जो किसी वैरिएबल के मूल नाम को प्राप्त करता है, क्योंकि यह एक फ़ंक्शन को दिया गया था। फ़ंक्शन के अंदर ऐसा कोई तरीका नहीं है जिससे मैं यह जान पाऊं कि जैसा लगता है। उपरोक्त दूसरे उदाहरण में संदर्भ के आधार पर get_defined_vars () पास करने से मुझे कुछ मदद मिली (उस विचार के लिए जीन-जैक्स ग्यूगन के लिए धन्यवाद)। उत्तरार्द्ध समारोह ने काम करना शुरू कर दिया, लेकिन यह अभी भी केवल स्थानीय चर ('चर' को लौटाता रहा, 'रंग' को नहीं)।
मैंने अभी तक get_func_args () और get_func_arg (), $ {} - constructs और key () संयुक्त का उपयोग करने की कोशिश नहीं की है, लेकिन मुझे लगता है कि यह भी विफल हो जाएगा।