🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## Idea模型实例化 无论是数据库对象还是模型对象,Idea都进行了很好的单例化实现。 简要的说实例化模型对象有三种方法,我们推荐使用第二方法: * 第一种方法较为传统,就是简单的new出一个对象 ~~~ <?php namespace app\home\controller; class Index extends Common{ public function userInfo(){ $obj_user = new \app\home\model\User(); $userInfo = $obj_user->userInfo(); } } ~~~ * 第二种方法是使用工厂模式实例化出单例模型,如果需要模型跨模块(平台)调用时,可以这样实例化 ~~~ <?php namespace app\home\controller; class Index extends Common{ public function userInfo(){ $obj_user=\system\Model::getModel('\app\home\model\User'); $userInfo = $obj_user->userInfo(); } } ~~~ >[warning]注意:第一、二种方法支持跨模块调用(特殊需求),第三种不支持 * 第三种方法使用内置的辅助函数`model()`,主要是对第二种方法的函数封装,但不支持跨模型。可以进行模型单例化 共方法辅助函数`model()`有两个参数,直接在控制器类里面调用就行 | model方法参数 | 值 | 属性 | | -- | -- | -- | | 参数1 | 模型名 | 必要 | | 参数2 | 模型方法名 | 可选(当调用的方法有参数时不使用) | 如果只设置了第一参数,实例化模型代码如下 ``` <?php namespace app\home\controller; class Index extends Common{ public function User(){ $objUser=model('User'); $userInfo=$objUser->userInfo(); } } ``` 如果设置了第二个参数,上面的代码等效于 ``` <?php namespace app\home\controller; class Inde extends Common{ public function userInfo(){ //实例化并调用模型操作 $user_info=model('User','userInfo'); } } ``` >[danger]注意:但如果调用的模型方法需要传参,则不要使用第二参数