在ThinkPHP3.2.3中除了有直接实例化模型和D方法实例化模型类,还有M方法实例化模型。D方法实例化模型类的时候通常是实例化某个具体的模型类,如果你仅仅是对数据表进行基本的CURD操作的话,使用M方法实例化的话,由于不需要加载具体的模型类,所以性能会更高。
例如:
// 使用M方法实例化 $User = M('User'); // 和用法 $User = new \Think\Model('User'); 等效 // 执行其他的数据操作 $User->select();
M方法也可以支持跨库操作,例如:
// 使用M方法实例化 操作db_name数据库的ot_user表 $User = M('db_name.User','ot_'); // 执行其他的数据操作 $User->select();
M方法的参数和\Think\Model类的参数是一样的,也就是说,我们也可以这样实例化:
$New = M('new','think_',$connection); // 等效于 $New = new \Think\Model('new','think_',$connection);
具体的参数含义可以参考前面的介绍。
M方法实例化的时候,默认情况下是直接实例化系统的\Think\Model类,如果我们希望实例化其他的公共模型类的话,可以使用如下方法:
$User = M('\Home\Model\CommonModel:User','think_','db_config'); // 相当于 $User = new \Home\Model\CommonModel('User','think_','db_config');
如果你的模型类有自己的业务逻辑,M方法是无法支持的,就算是你已经定义了具体的模型类,M方法实例化的时候是会直接忽略。