0

組み込みの PHP 関数のように動作する一連のグローバル関数を Symfony 2 アプリ (複数のコントローラーとエンティティにわたって) で利用できるようにしたいと考えています。例えば:

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';
}

index.php

<?php

namespace Foo\Bar;

require 'functions.php';

foo(); // 'bar'

ただし、この方法で単純な関数を定義することはお勧めしません。第一に、それらはグローバル名前空間を汚染します (潜在的な名前の衝突につながります)。第二に、静的メソッドを使用してクラスを宣言する方がはるかに優れています。そうすれば、自動読み込みメカニズムの恩恵を受けることもできます。

于 2013-03-28T20:59:32.333 に答える