আমি আসলে এই জন্য একটি বৈধ ব্যবহারের কেস আছে।
আমার একটি ফাংশন ক্যাশে ভেরিয়েবল ($ 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 (), $ {} - নির্মাণ এবং কী () মিলিয়ে ব্যবহার করার চেষ্টা করি নি, তবে আমি অনুমান করি যে এটি ব্যর্থও হবে।