0

我想为我的 Symfony 2 应用程序(跨多个控制器和实体)提供一组全局函数,它们的作用类似于内置的 PHP 函数。例如:

function startsWith($haystack, $needle) {
    return !strncmp($haystack, $needle, strlen($needle));
}

我可以创建一个包含这些函数的文件,但需要为每个命名空间复制它:

namespace Taggle\TaggleBundle\DependencyInjection;
namespace Taggle\TaggleBundle\Controller;

处理这个问题的最佳方法是什么?

4

1 回答 1

0

如果带有函数声明的文件未定义命名空间,则函数将在全局命名空间中声明。

全局命名空间中的函数可以在任何其他命名空间中通过它们的常规名称调用。

函数.php

<?php

function foo() {
  echo 'bar';
}

索引.php

<?php

namespace Foo\Bar;

require 'functions.php';

foo(); // 'bar'

但是,我建议不要以这种方式定义普通函数。首先它们污染了全局命名空间(导致潜在的命名冲突),其次你最好用静态方法声明一个类。这样,您还可以从自动加载机制中受益。

于 2013-03-28T20:59:32.333 回答