2017-03-16 5 views
1

Ich versuche, Klassen aus einem anderen Namespace dynamisch zu laden, ich kann dies tun, wenn ich die Klasse kenne, aber wenn ich den Klassennamen als String übergeben möchte, kann ich es nicht bekommen Arbeit.Klasse aus einem anderen Namespace dynamisch importieren

Dies funktioniert statisch:

namespace Foo; 

use Bar; 

$obj = new Bar\SomeClassFromBar(); 

Diese nicht dynamisch funktioniert:

namespace Foo; 

use Bar; 

$class = 'SomeClassFromBar'; 

$obj = new Bar\$class(); 

Ist das möglich PHP7 mit?

+0

haben Sie versucht das? – hassan

Antwort

1

Sie können dies tun, wie folgt:

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

Perfekt, danke! :) – Rhu

Verwandte Themen