1、模型本质上是一个实例类,该类封装了操作数据库的常见方法,模型一旦被实例化,意味着开始链接数据库。ThinkPHP不强制自定狲辍嗨嘴义模型与数据表进行映射,开发人员完全可以当成一个普通的类文件来使用,所以使用new方式也是没任何问题的。为了简单操作,ThinkPHP还提供了3种方式快速实例化模型,如下所示● new Model(‘数据表名’),使用传统的new方式实例化Model基类,该类封装了操作数据库的常见方法。需要注意的是new方式不能实例化自定义模型。● M(name=‘’,class=‘Model’),快捷函数实例化模型。参数name表示数据表名称,class表示自定模型类。M函数可以在初始化数据表后再实例化一个自定义的模型类。● D(name=‘’,app=‘’),D函数专门用于实例化自定义模型,参数name表示模型名(不需要Model.class.php);app表示项目名称,如果调用跨项目的自定义模型,那么该参数是必需的,为空时则表示当前项目。关于怎样使用Model基类进行数据库操作,如果现在需要实例化UserModel类,那么正确的实例化方式如下代码所示
2、M函数同样可以实例化自定义模型,但该函数必须先初始化数据库,然后才能实例化自定义模型类,如以下代码所示
3、M函数可以方便地进行数据库操作。利用自定义模型能够实现更复杂的数据库操作。M函数的第1个参数表示数据表名,不能为空;第2个参数为自定义模型,如果载入自定义模型,该模型类必须位于当前项目。在实际应用开发中经常需要初始化一些全局接口。例如网站的会员系统,在访客进入会员系统前一般都需要判断该用户的权限、级别,以便于系统分配相应的功能;再比如一些第三方扩展类,在调用自定模型之前都需要初始化。在标准的PHP类设计中,通常开发人员会在构造函数中完成这些初始化的操作。但在ThinkPHP自定义模型中,并不允许使用构造函数,只提供了_initialize()方法,该方法拥有最高的优先级,所有的自定义类只要存在_initialize()方法,就会首先运行该方法。如下代码所示
4、_initialize()不仅可以运行在自定义模型中,还可以在控制器中使用,得到的效果也是一样的。利用_initialize()方法可以方便地对自定义类进行初始化,ThinkPHP内置的许多扩展也是使用_initialize()来实现的,实际中经常会使用到_initialize()方法。