thinkphp3.2.3在模型直接实例化的时候我们需要传入完整的类名,然而系统提供了一个快捷方法D用于数据模型的实例化操作。
要实例化自定义模型类,可以使用下面的方式:
<?php //实例化模型 $User = D('User'); // 相当于 $User = new \Home\Model\UserModel(); // 执行具体的数据操作 $User->select();
当
\Home\Model\UserModel
类不存在的时候,D函数会尝试实例化公共模块下面的\Common\Model\UserModel
类。
D方法的参数就是模型的名称,并且和模型类的大小写定义是一致的,例如:
参数 | 实例化的模型文件(假设当前模块为Home) |
---|---|
User | 对应的模型类文件的 \Home\Model\UserModel.class.php |
UserType | 对应的模型类文件的 \Home\Model\UserTypeModel.class.php |
如果在Linux环境下面,一定要注意D方法实例化的时候的模型名称的大小写。
D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化系统的\Think\Model基类,同时对于已实例化过的模型,不会重复实例化。
D方法还可以支持跨模块调用,需要使用: //实例化Admin模块的User模型 D('Admin/User'); //实例化Extend扩展命名空间下的Info模型 D('Extend://Editor/Info');
注意:跨模块实例化模型类的时候 不支持自动加载公共模块的模型类。