标签:
参考:http://blog.csdn.net/yanhui_wei/article/details/8037367
http://blog.csdn.net/yanhui_wei/article/details/8037323
http://www.thinkphp.cn/simple/functions_d.html
http://www.thinkphp.cn/simple/functions_m.html
M方法:
M方法的调用格式:
M(‘[基础模型名:]模型名‘,‘数据表前缀‘,‘数据库连接信息‘)
1.在没有定义任何模型的时候,用下面的方法实例化一个模型类:
$User = M(‘User‘);
$User->select();
其实等效于:
$User = new Model(‘User‘);
2.实例化其他公共模型类
$User = M(‘CommonModel:User‘);
其实等效于:
$User = new CommonModel(‘User‘);//一种组合的形式,用于扩展一些通用的逻辑功能
3.传入表前缀、数据库和其他信息
M方法有三个参数,第一个参数是模型名称(可以包括基础模型类和数据库),第二个参数用于设置数据表的前缀(留空则取当前项目配置的表前缀),第三个参数用于设置当前使用的数据库连接信息(留空则取当前项目配置的数据库连接信息)
$User = M(‘db2.User‘,‘think_‘);
表示实例化Model模型类,并操作db2数据库中的think_user表。
$User = M(‘db1.User‘,null);
表示实例化Model模型类,并操作db1数据库中的user表。
$User = M(‘User‘,‘think_‘,‘mysql://user_a:1234@localhost:3306/thinkphp‘);
表示基础模型类用Model,然后对think_user表进行操作,用user_a账号进行数据库连接,操作数据库是thinkphp。
第三个连接信息参数可以使用DSN配置或者数组配置,甚至可以支持配置参数。例如,在项目配置文件中配置了: ‘DB_CONFIG‘=>‘mysql://user_a:1234@localhost:3306/thinkphp‘;
则可以使用:
$User = M(‘User‘,‘think_‘,‘DB_CONFIG‘);
基础模型类和数据库可以一起使用,例如:
$User = M(‘CommonModel:db2.User‘,‘think_‘);
如果要实例化分层模型的话,利用公共模型类的方式,我们可以使用:
M(‘UserLogic:User‘); 来实例化UserLogic,虽然这样做的意义不大,因为可以用D(‘User‘,‘Logic‘); 实现同样的功能。
D方法:
用于实例化自定义模型类,是ThinkPHP框架对Model类实例化的一种封装,并实现了单例模式,支持跨项目和分组调用。
调用格式如下:
D(‘[项目://][分组/]模型‘,‘模型层名称‘)
D方法可以自动检测模型类,如果存在自定义的模型类,则实例化自定义模型类,如果不存在,则会实例化Model基类,同时对于已实例化过的模型,不会重复去实例化。
1.$User = D(‘User‘);
会导入当前项目下面的Lib/Model/UserModel.class.php文件,然后实例化UserModel类,等效于:
import(‘@.Model.UserModel‘);
$User = new UserModel();
2.D方法可以支持跨分组和项目实例化模型
//实例化Admin项目的User模型
D(‘Admin://User‘)
//实例化Admin分组的User模型
D(‘Admin/User‘)
注意:要实现跨项目调用模型的话,必须确保两个项目的目录结构是并列的。
标签:
原文地址:http://www.cnblogs.com/hqt2050/p/5021226.html