1

我有使用 Perl、Python 和 Javascript 编程的经验,但最近继承了一个 PHP 项目,在我看来,它看起来像很多意大利面条代码。

我正在尝试重构项目,以便在单元测试下正确获得它。对我来说,这意味着查看源代码并将所有内容分解为不使用全局变量的小函数,每个函数都执行一项特定任务。

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

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

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

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

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

或者它的一些变化。有没有办法在 PHP 中做到这一点?另外,这方面的正确约定是什么?

4

3 回答 3

3

我认为你有三个选择:

  • 使用类来捆绑函数
  • 使用命名空间
  • 两者都使用

如果您只想坚持使用函数(更容易重写),只需使用命名空间就可以了。

于 2013-07-29T09:36:56.553 回答
2

在 PHP 中,您使用名称空间来避免这样的冲突。

于 2013-07-29T09:32:22.787 回答
0

除了使用下面建议的名称空间。您也可以完全按照您对 javascript 所做的操作

$module = function () {
                  return array(
                      'func1' => function () {},
                      'func2' => function () {}
                  );
                };
于 2013-07-29T09:36:05.757 回答