私の会社は長年にわたってモジュール式のPHPフレームワークを作成し、PHP 5.3が追加された名前空間の前に始めました。最近、ライブラリの新しい名前空間を使用することにしました。コード、および最終的には古いコードに名前空間を付けるつもりですが、v5.3より前のコードベースに名前空間を追加するのが良い考えではないかどうかを判断するために考えているいくつかの問題があります。
\
プレフィックスを付ける必要がないようにすることはできますか?ThemeEngine
の名前を\module\theme\ThemeEngine
に変更できますが、既存のWebサイトはanyコードを変更せずにThemeEngine
を呼び出しますか?もしそうなら、そのコードはどのように見えるでしょうか?名前空間をまったく「使用」することはできません。悲しいことに、クラスのみ http://www.php.net/manual/en/language.namespaces.importing.php です。編集:いずれかの例のArrayObjectで行ったように、グローバル名前空間からクラスをインポートできます。
グローバル名前空間にある既存のすべてのクラスが理論的にはクラスを適切に検出できるように、useステートメントのグローバルセクションを持つことができます。理論的には...
私たちはあなたと同じ船に乗っています。名前空間を使用しない古いコードがいくつかありますが、_namespace faker(Zend_Db_Table ...など)を使用しており、名前空間を偽造しない古いコードもいくつかあります。おそらく同じルートを取るでしょうが、それが可能かどうかをテストする必要があります。幸運を!
結局私がやったことは使用でした-必要な個々のクラスをインポートするための「使用」
たとえば、次のようなすべての前に「/」を追加する代わりに:
\DateTime()
名前空間の下に追加しました
namespace MyProject;
use DateTime;
...
DateTime(); //without \
...