我是一名 JS 开发人员,经常使用自执行匿名函数来最大限度地减少对全局范围的污染。
即:(JS)
(function(){
var x = ...
})();
在 PHP 中是否可以/建议使用相同的技术来最小化函数/变量名冲突?
即:(PHP)
(function(){
$x = 2;
function loop($a){
...
}
loop($x);
})();
我是一名 JS 开发人员,经常使用自执行匿名函数来最大限度地减少对全局范围的污染。
即:(JS)
(function(){
var x = ...
})();
在 PHP 中是否可以/建议使用相同的技术来最小化函数/变量名冲突?
即:(PHP)
(function(){
$x = 2;
function loop($a){
...
}
loop($x);
})();
为避免全局污染,请使用类和面向对象的方法: 请参阅此处的 PHP 文档
为了进一步避免污染,请避免使用静态和全局变量。
像您展示的那样在 Javascript 中使用的闭包是因为它(Javascript)是一种基于原型的语言,通常在基于 OO 的语言中没有属性(在形成意义上)。
是的,您可以在 PHP 中创建匿名函数,这些函数可以立即执行而不会污染全局命名空间;
call_user_func(function() {
$a = 'hi';
echo $a;
});
语法不如 Javascript 等价物漂亮,但它做同样的工作。我发现这个结构非常有用并且经常使用它。
你也可以像这样返回值;
$str = call_user_func(function() {
$a = 'foo';
return $a;
});
echo($str); // foo
echo($a); // Causes 'Undefined variable' error.