2017-03-16 12 views
1

別の名前空間からクラスを動的にロードしようとしていますが、クラスを知っていればこれを行うことができますが、クラス名を文字列として渡したい場合、作業。別の名前空間からクラスを動的にインポート

これは静的に動作します:

namespace Foo; 

use Bar; 

$obj = new Bar\SomeClassFromBar(); 

これは、動的に動作しません:

namespace Foo; 

use Bar; 

$class = 'SomeClassFromBar'; 

$obj = new Bar\$class(); 

がPHP7を使用して、このことは可能ですか?

+0

は、あなたはこれを試したのですか? – hassan

答えて

1

次のようにあなたはこれを行うことがあります。

namespace Foo; 

$class = 'SomeClassFromBar'; 

$stdClass = "\\Bar\\" . $class; 

$obj = new $stdClass(); 

full example :

namespace Bar { 
    class SomeClassFromBar 
    { 
     public function __construct() 
     { 
      echo __CLASS__ . "\n"; 
     } 
    } 
} 

namespace Foo { 
    $class = 'SomeClassFromBar'; 

    $stdClass = "\\Bar\\" . $class; 

    $obj = new $stdClass(); 

    // Output : Bar\SomeClassFromBar 
} 
+0

パーフェクト、ありがとう! :) – Rhu

関連する問題