2013-07-29 57 views
1

我有使用Perl,Python和Javascript进行编程的经验,但最近继承了一个PHP项目,它看起来像许多意大利面代码给我。PHP:如何处理全球范围

我正在尝试重构该项目,以便在单元测试下正确地得到它。对我而言,这意味着查看源代码并将所有东西都分解成不使用全局变量并且每个执行一个特定任务的小函数。

我知道PHP的模块系统有点像Javascript:所有源文件在include上连接成一个。

这意味着两个单独文件中的函数不能具有相同的名称,假定其中一个文件将使用另一个文件。

我的问题是:我应该如何定义我的函数来处理PHP中的全局范围问题?

在Javascript中,我会使用模块模式,像这样:

var MyModule = (function() { 
        return { 
         'func1': function() {}, 
         'func2': function() {} 
        }; 
       }()); 

或一些变化。 有没有办法在PHP中做到这一点?另外,这有什么合适的约定?

回答

3

我觉得你有三种选择:捆绑功能

  • 使用namespaces
  • 使用两个
    • 使用类

      如果你想坚持只是功能(更容易重写),只需使用命名空间,你应该 好。

    2

    在PHP中,您使用namespaces来避免这样的冲突。

    0

    除了使用如下建议的名称空间。你也可以做你的JavaScript做了什么

    $module = function() { 
            return array(
             'func1' => function() {}, 
             'func2' => function() {} 
           ); 
           };