ThinkPHP3.0完全开发手册                                           

 

13.4.2          调用扩展模型

定义了模型扩展之后,有多种方式可以使用扩展模型:

一、继承扩展模型

最普遍的用法就是项目中的自定义模型或者公共模型直接继承扩展模型,例如:

我们需要使用Mongo模型的话,可以:

Class UserModel extends MongoModel{}

把原来的继承从Model类改为扩展模型MongoModel,就可以使用MongoModel的所有功能。

如果你的项目大部分模型都继承了一个公共的模型类CommonModel的话,只需要改下CommonModel的继承定义:

Class CommonModel extends MongoModel{}

所有继承自CommonModel的自定义模型也可以使用MongoModel的功能。

 

二、使用动态模型切换的方式

例如,我们定义了一个UserModel如下:

Class UserModel extends Model{}

为了使用AdvModel高级模型的功能,我们使用下面的方式切换到高级模型进行操作:

$User->switchModel("Adv")->top10();

注意:动态模型切换方法switchModel调用的时候无需写完整的扩展模型名称,需要去掉扩展模型的Model后缀后调用。

 

三、M方法实例化

如果我们没有定义自定义模型,则可以直接采用M方法实例化需要继承的扩展模型,例如:

M("AdvModel:User")->top10();

这里表示实例化User模型,而且该模型使用的基础模型类为AdvModel扩展模型类,这里引用的扩展模型需要使用全名。


NetPc