use MyNamespace;
class NonPersistentStorage implements StorageInterface
Her iki MyNamespace bulunmaktadır. Oysa PHP MyNamespace \ NonPersistentStorage ve StorageInterface (yerine MyNamespace \ StorageInterface) arar. Ben bir şey eksik?
Aslında, bu beyanname kesinlikle hiçbir şey yok "kullanın". Onlar ad hiyerarşisinde daha derin olduğunda (örneğin, Foo \ Bar \ Baz kullanın) veya bunları bir takma ad vermek istediğinizde (örneğin, Bar olarak Foo kullanabilirsiniz) (kullanım) ad almanız gerekir. Ben size dosyanın kendisi MyNamespace ait olduğunu beyan istedim düşünüyorum:
namespace MyNamespace;
class NonPersistentStorage implements StorageInterface { /* ... */ }
Veya, aynı zamanda ad alanları için de aynı sözdizimini kullanarak, ayrı ayrı işlevleri ve sınıfları almak isteyebilirsiniz.
PHP Ad Diğer dillerde biraz daha farklı çalışır. Bir ad aldığınızda, gerçekten sadece ad aliasing konum, kapsam içine sınıfları getiren değildir. Ad yalnızca bir seviye İthalat kesinlikle hiçbir şey yok. Bir şey almak bile, yine de onun alttaki ad başvurmak gerekir.
Örneğin, bu varsa:
foo.php:
namespace Bar\Baz\Biz;
class Foo
{}
İşte bunu kullanmak nasıl:
blah.php:
use Bar\Baz\Biz;
$var=new Biz\Foo();
Bunu ithal olsa da, ben yine de Biz'i kullanarak başvurmak zorunda nasıl?
However, you can get around this using aliases: blah.php:
use Bar\Baz\Biz\Foo as Foo;
$var=new Foo();
Gördüğünüz gibi, ben artık bunu hak etmek gerekir.
Ancak ne yazık ki, PHP hayır "tüm ithalat" var; Eğer yukarıdaki bitti ne yapmak istiyorsanız, almak istediğiniz her sınıf takma adı var.