2011-08-19 15 views
48

私は既存のプロジェクトに名前空間を実装しています。私はあなたの名前空間にクラスをインポートするためにキーワード 'use'を使うことができることを発見しました。私の質問は、1つの名前空間から別の名前空間にすべてのクラスをインポートすることもできます。例:PHP 7でPHP 7+PHP他の名前空間からすべてのクラスをインポートする方法

新機能の

namespace foo 
{ 

    class bar 
    { 

     public static $a = 'foobar'; 

    } 

} 

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

アップデートは宣言をグループ化しています。これは、指定された名前空間内のすべてのクラスのための1「use文」を使用して限り簡単にそれを作るが、それはいくらか容易...

例コードになりません。

<?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}; 
?> 

も参照してください:https://secure.php.net/manual/en/migration70.new-features.php#migration70.new-features.group-use-declarations

+1

マインドあなたは、「インポート」はあなたが実際にそのクラスを見つけることができることを意味しないこと。あなたは、そのクラスを手作業の要求かオートローダーのどちらかで利用できるようにする必要があります。 – Nanne

+1

しかし、私は言い換えれば、それをどのように置くべきかわかりません。 – Rob

+0

私はそうだと思ったが、混乱を避けるために:) – Nanne

答えて

53

これはPHPでは不可能です。

あなたがすることができるすべては、次のとおりです。

namespace Foo; 

use Bar; 

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

ありがとう、あまりにも悪い... – Rob

+2

もちろん、あなたは具体的なクラスを使用clausuleに入れることができます。 ( 'use Bar \ SomeClassFromBar; $ obj = new SomeClassFromBar();') –

+8

なぜPHPはこれを提供しないのですか? –