Symfony 2全球功能

时间:2013-03-28 20:42:38

标签: php symfony

我希望我的Symfony 2应用程序(跨多个控制器和实体)可以使用一组全局函数,这些函数就像内置的PHP函数一样。例如:

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

<强>的functions.php

<?php

function foo() {
  echo 'bar';
}

<强>的index.php

<?php

namespace Foo\Bar;

require 'functions.php';

foo(); // 'bar'

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