2017-03-16 49 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