我想动态创建对象。现在我正在手动创建它们
$obj1 = new Prefix_Myobj();
$obj2 = new Prefix_Other();
$obj3 = new Prefix_Another();
如何动态设置Prefix_
之后的部分?我尝试了这个,但它不起作用
$name = 'Myobj';
$obj1 = new Prefix_{$name}();
答案 0 :(得分:9)
您需要创建一个指定整个类名的字符串。
$name = 'Myobj';
$classname = 'Prefix_'.$name;
$obj1 = new $classname();
然而,构建类的类注册表可能更好,而不是像这样生成类名。
答案 1 :(得分:0)
你为什么需要这个?也许有更好的解决方案来解决你的问题;多重或依赖注入等...
答案 2 :(得分:0)
重要的是,如果您的类位于特定的命名空间中,则需要通知完整路径。例如:
namespace my\path\app;
class MyClass {
$name = 'Myobj';
$classname = 'my\path\app\Prefix_' . $name;
$obj1 = new $classname();
}