6
私はいくつかのクラスとインタフェースでPHPの名前空間を使用しようとしています。PHP名前空間とインターフェイス
インターフェイスと使用されている具体的なタイプの両方にuseステートメントを入れる必要があるようです。これは、インターフェイスを使用する目的を確実に破るようなものですか?
具体的なタイプは互換性がありますようにだから私は、インターフェースの全体のポイントイマイチ
//Interface
namespace App\MyNamesapce;
interface MyInterface
{}
//Concrete Implementation
namespace App\MyNamesapce;
class MyConcreteClass implements MyInterface
{}
//Client
namespace App;
use App\MyNamespace\MyInterface // i cannot do this!!!!
use App\MyNamespace\MyConcreteClass // i must do this!
class MyClient
{}
を有することができる - これは確かにその反します。私が何か正しくしていない限り、
代わりに 'use namespace'を使用するのではなく、代わりにクラスへのフルパスを使用しますか? –
必ずしも、クラスを現在の名前空間にインポートすることもできます。それは単なるスタイルの問題です。 – Niko
はい、私はインターフェイスを使っているので、ネームスペースをインターフェイスにしたいと思っていましたが、実際には反映されていないと意味がありません。より良い選択肢は、私が想定している依存性注入を使用し、相互交換可能なクラスをインスタンス化しないことでしょうか? –