我可以动态设置新对象名称吗?

时间:2011-02-07 19:28:36

标签: php oop

我想动态创建对象。现在我正在手动创建它们

$obj1 = new Prefix_Myobj();
$obj2 = new Prefix_Other();
$obj3 = new Prefix_Another();

如何动态设置Prefix_之后的部分?我尝试了这个,但它不起作用

$name = 'Myobj';
$obj1 = new Prefix_{$name}();

3 个答案:

答案 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();
}