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();