Sto cercando di utilizzare gli spazi dei nomi in php con alcune classi e interfacce.PHP Namespace e interfacce
Sembra che sia necessario inserire un'istruzione di utilizzo per l'interfaccia e il tipo di calcestruzzo utilizzato. Questo è un po 'come sconfiggere lo scopo di usare le interfacce sicuramente?
così che io possa avere
//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
{}
non è il punto centrale di interfacce in modo che i tipi concreti sono intercambiabili - questo va contro che sicuramente. A meno che non stia facendo qualcosa correttamente
Quindi, anziché utilizzare "usa spazio dei nomi", utilizzare invece il percorso completo della classe? –
Non necessariamente, è anche possibile importare la classe nello spazio dei nomi corrente. È solo una questione di stile. – Niko
Sì, stavo pensando che, dal momento che sto usando un'interfaccia, voglio che lo spazio dei nomi sia l'interfaccia, ma in realtà su una riflessione che non ha alcun senso. Un'opzione migliore sarebbe quella di utilizzare l'iniezione di dipendenza suppongo e mai istanziare una classe che può essere intercambiabile ?? –