2011-08-19 7 views
48

Mevcut projemde ad alanlarını uyguluyorum. Sınıfları ad alanınıza aktarmak için 'use' anahtar sözcüğünü kullanabileceğinizi buldum. Sorum şu, aynı zamanda tüm sınıfları bir başka isimden diğerine de aktarabilirim. Örnek: PHP 7'de PHP 7+PHP başka bir ad alanından tüm sınıfları nasıl içe aktarabilirim

yeni bir özellik için

namespace foo 
{ 

    class bar 
    { 

     public static $a = 'foobar'; 

    } 

} 

namespace 
{ 
    use \foo; //This doesn't work! 
    echo bar::$a; 
} 

Güncelleme bildirimleri gruplandırılır. Bu ... Bir isim uzayında tüm sınıfları için 1 'kullanım deyimi' kullanırlar olduğunca kolaylaştırmak, ancak biraz daha kolay hale getirir vermez

örnek kod: Ayrıca

<?php 
// Pre PHP 7 code 
use some\namespace\ClassA; 
use some\namespace\ClassB; 
use some\namespace\ClassC as C; 

// PHP 7+ code 
use some\namespace\{ClassA, ClassB, ClassC as C}; 
?> 

bakınız: https://secure.php.net/manual/en/migration70.new-features.php#migration70.new-features.group-use-declarations

+1

Zihin sizi. Yine de, bu sınıfın manuel bir gereklilik veya otomatik yükleyici ile mevcut olması gerekir. – Nanne

+1

Elbette, ama başka bir deyişle nasıl koyacağımı bilmiyorum. – Rob

+0

Düşündüm ama karışıklıktan kaçınmak için :) – Nanne

cevap

53

Bu, PHP'de mümkün değildir.

yapabileceğiniz tek şey: "Al" aslında o sınıfı bulabilmesi anlamına gelmez

namespace Foo; 

use Bar; 

$obj = new Bar\SomeClassFromBar(); 
+7

Teşekkürler, çok kötü ... – Rob

+2

Veya tabiki, kullanım clausule içine somut sınıflar koyabilirsiniz. ('Bar \ SomeClassFromBar; $ obj = new SomeClassFromBar();') kullanın –

+8

Oh neden PHP bunu sağlamadı ... –