实例化模型

Idea模型实例化

无论是数据库对象还是模型对象,Idea都进行了很好的单例化实现。
简要的说实例化模型对象有三种方法,我们推荐使用第二方法:

  • 第一种方法较为传统,就是简单的new出一个对象
    <?php
    namespace apphomecontroller;
    

class Index extends Common{

public function userInfo(){
	$obj_user = new apphomemodelUser();
	$userInfo = $obj_user->userInfo();
}

}

* 第二种方法是使用工厂模式实例化出单例模型,如果需要模型跨模块(平台)调用时,可以这样实例化

<?php
namespace apphomecontroller;

class Index extends Common{

public function userInfo(){
	$obj_user=systemModel::getModel("apphomemodelUser");
	$userInfo = $obj_user->userInfo();
}

}

>[warning]注意:第一、二种方法支持跨模块调用(特殊需求),第三种不支持

* 第三种方法使用内置的辅助函数`model()`,主要是对第二种方法的函数封装,但不支持跨模型。可以进行模型单例化
共方法辅助函数`model()`有两个参数,直接在控制器类里面调用就行

| model方法参数   |   值 |  属性  |
| -- | -- | -- |
|  参数1  |  模型名  |  必要  |
|  参数2  |  模型方法名  |  可选(当调用的方法有参数时不使用)  |

如果只设置了第一参数,实例化模型代码如下
```
<?php
namespace apphomecontroller;


class Index  extends Common{
	public function User(){
	    $objUser=model("User");
		$userInfo=$objUser->userInfo();
    }
}
```
如果设置了第二个参数,上面的代码等效于
```
<?php
namespace apphomecontroller;

class Inde  extends Common{
	public function userInfo(){
    	//实例化并调用模型操作
	    $user_info=model("User","userInfo");
    }
}
```
>[danger]注意:但如果调用的模型方法需要传参,则不要使用第二参数
文章导航