## 关于模型(M)
* 模型类通常完成实际的业务逻辑和数据封装,并返回和格式无关的数据。模型类并不一定要访问数据库,你可以对模型层进行更细化的设计和分工,例如把模型层分为逻辑层/服务层/事件层等等。
* 呆错框架提供的基础模型类放置在扩展目录(extend/daicuo)。
* 呆错框架提供的公共模型类放置在公共目录(apps/common/loglic)。
## 模型调用
模型类可以使用静态调用或者实例化调用两种方式(呆错的基类模型类通常使用静态方式调用、公共模型类采用实例化的方式调用),例如:
~~~
// 静态调用
$user = User::get(1);
$user->name = 'thinkphp';
$user->save();
// 实例化模型
$user = new User;
$user->name= 'thinkphp';
$user->save();
// 使用 Loader 类实例化(单例)
$user = Loader::model('User');
// 或者使用助手函数`model`
$user = model('User');
$user->name= 'thinkphp';
$user->save();
~~~
## 模型分层
除了Model层之外,我们可以根据项目的需要设计和创建其他的模型层。通常情况下,不同的分层模型仍然是继承系统的\think\Model类或其子类,所以,其基本操作和Model类的操作是一致的。
例如在index模块的设计中需要区分数据层、逻辑层、服务层等不同的模型层,我们可以在模块目录下面创建model、logic和service目录,把对用户表的所有模型操作分成三层:
* 数据层:app\\index\\model\\User 用于定义数据相关的自动验证和自动完成和数据存取接口
* 逻辑层:app\\index\\logic\\User 用于定义用户相关的业务逻辑
* 服务层:app\\index\\service\\User 用于定义用户相关的服务接口等
## 助手函数
* model 实例化模型类