变量名称的PHP全局变量
问题描述:
我想有一个函数,除其他外,我声明一个变量,我给它的全局变量。 失败的部分是使变量全球变量名称的PHP全局变量
function setGlobalVariable($name) {
global $name, $arrayname_{$name};
}
任何想法? 谢谢:)
答
真的,停止搞乱全局变量的方式。这里
Anywaym是你的解决方案,如果你真的想这样做:
function setGlobalVariable($name) {
$GLOBALS['arrayname_' . $name] = 'yourvalue';
}
答
你不应该这样做。全局变量通常是设计不佳的标志。你试图达到什么目标?我相信有更好的解决方案。除此之外,global
不能像那样工作。 global
使您的函数外的其他变量在本地可用。使用$_GLOBAL
创建全局变量。
答
你几乎是正确的,但不完全;一个变量变量采取${"name"}
的形式,所以你要找的东西就像global ${"arrayname_$name"};
。
http://www.reddit.com/r/programming/comments/dst56/today_i_learned_about_php_variable_variables/c12np38关于这个话题是非常有趣的阅读,如果你觉得如此倾向。
虽然这可能是一个可怕的想法,如果你诉诸于这样的事情,这是一个很好的迹象表明你的代码可能设计得不好。考虑对其进行重构(例如,保留一个已知数组,您的其他数组保留在其中,并且可以通过键引用)。
答
查看注册表模式(http://martinfowler.com/eaaCatalog/registry.html)。
一个众所周知的对象,其他对象 可以用它来找到共同的目标和 服务。
有各种PHP实现,例如合适的词汇:http://framework.zend.com/manual/en/zend.registry.html
你为什么要与污染变量的全局命名空间? – stillstanding 2010-11-23 11:27:06