从另一个命名空间动态导入类

时间:2017-03-16 10:42:59

标签: php php-7

我正在尝试动态地从另一个命名空间加载类,如果我知道该类,我可以这样做,但如果我想将类名作为字符串传递,我就无法使它工作。

这是静态的:

namespace Foo;

use Bar;

$obj = new Bar\SomeClassFromBar();

这不会动态生效:

namespace Foo;

use Bar;

$class = 'SomeClassFromBar';

$obj = new Bar\$class();

这可以使用PHP7吗?

1 个答案:

答案 0 :(得分: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
}