我正在尝试动态地从另一个命名空间加载类,如果我知道该类,我可以这样做,但如果我想将类名作为字符串传递,我就无法使它工作。
这是静态的:
namespace Foo;
use Bar;
$obj = new Bar\SomeClassFromBar();
这不会动态生效:
namespace Foo;
use Bar;
$class = 'SomeClassFromBar';
$obj = new Bar\$class();
这可以使用PHP7吗?
答案 0 :(得分:1)
您可以按照以下方式执行此操作:
namespace Foo;
$class = 'SomeClassFromBar';
$stdClass = "\\Bar\\" . $class;
$obj = new $stdClass();
namespace Bar {
class SomeClassFromBar
{
public function __construct()
{
echo __CLASS__ . "\n";
}
}
}
namespace Foo {
$class = 'SomeClassFromBar';
$stdClass = "\\Bar\\" . $class;
$obj = new $stdClass();
// Output : Bar\SomeClassFromBar
}