Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用Yii2中的变量classname启动模型对象_Php_Oop_Yii2 - Fatal编程技术网

Php 无法使用Yii2中的变量classname启动模型对象

Php 无法使用Yii2中的变量classname启动模型对象,php,oop,yii2,Php,Oop,Yii2,我想使用变量模型类初始化一个模型对象 $model = new Role(); // This works $className = "Role"; $model = new $className(); // This is not working // PHP Fatal Error – yii\base\ErrorException // Class 'Role' not found 任何帮助都将不胜

我想使用变量模型类初始化一个模型对象

        $model = new Role();
//      This works

        $className = "Role";
        $model = new $className();
//      This is not working
//      PHP Fatal Error – yii\base\ErrorException
//      Class 'Role' not found

任何帮助都将不胜感激。

这意味着类
Role
\Role
)根本不存在于根命名空间中

您应该在名称空间中使用完整的类名,例如:

$className = 'app\models\Role';
$model = new $className();
您可以使用静态方法获取扩展自的任何对象的完整类:


成功了。谢谢但我想知道为什么我必须提供完整的类名和名称空间,即使我在控制器中提到了名称空间$模型=新角色();同样有效。您在名称空间中提到了它,例如
use app\models\Role
,但使用这种初始化,您只需提供字符串,它不依赖于
use
部分中的声明。好的,这是有意义的。谢谢。更新了有关获取类名的信息。如果答案有帮助,你也可以投票表决。
use app\models\Role;

$model = new Role::className();