从命名空间中的变量名称实例化新类

时间:2012-08-12 11:47:29

标签: php oop object namespaces

让我们说一个例子我有一个班级:

//no namespace
class User { 
    //...
}

我有一个变量:

$model = 'User';

当我当前在命名空间中时,如何实例化new User

当我不在命名空间中时,

new $model可以正常工作。但是,如果我在命名空间中并且User不在命名空间中,那该怎么办呢。

这样的事情不起作用:

namespace Admin;

class Foo {
    function fighter($model)
    {
        return new \$model;
        // syntax error, unexpected '$model'
    }
}

}

1 个答案:

答案 0 :(得分:8)

将完整的命名空间放在变量中,然后使用它。

<?php    
$namespace = '\\'.$model;

return new $namespace
?>

相同主题:Can PHP namespaces contain variables?