7

我是一名 JS 开发人员,经常使用自执行匿名函数来最大限度地减少对全局范围的污染。

即:(JS)

(function(){
    var x = ...
})(); 

在 PHP 中是否可以/建议使用相同的技术来最小化函数/变量名冲突?

即:(PHP)

(function(){

    $x = 2;

    function loop($a){
        ...
    }

    loop($x);

})();
4

2 回答 2

3

为避免全局污染,请使用类和面向对象的方法: 请参阅此处的 PHP 文档

为了进一步避免污染,请避免使用静态和全局变量。

像您展示的那样在 Javascript 中使用的闭包是因为它(Javascript)是一种基于原型的语言,通常在基于 OO 的语言中没有属性(在形成意义上)。

于 2013-02-13T04:32:05.243 回答
1

是的,您可以在 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.
于 2013-09-15T00:13:01.953 回答