## 开发指南
本篇来介绍一组控制器到逻辑模型到视图的基操。让你了解基本开发流程
从控制器 > 逻辑 > 模型 > 视图
## 开发注意
>[warning]所有操作代码中,有一组 `$this->logicOrders->getOrdersXXXX`
这里要说明一下 ,在父类控制器下采用了魔术方法 `__get()` ,依赖注入。
依赖注入其实本质上是指对类的依赖通过构造器完成自动注入。
说到依赖注入就不得不提到容器,现在主流开发框架都有容器的概念,一个杯子可以理解为一个容器,一个水桶也可以理解为容器,咱们不管容器的载体是谁,只需要知道在咱们代码中容器就是装数据滴。
依赖注入一般是提前通过文件定义,然后解析文件找到对应的类实例化对象给予到容器中。
还可以在生命周期过程中将对象或其他数据先放入容器中,在后续环节进行使用。
总之玩法五花八门,为了解决的问题就是咱们用对象不用new了,咱们用数据不用重新写逻辑了 等。
对应层级关系如下
<table>
<thead>
<tr>
<th width="22%">名称</th>
<th width="16%">变量</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>逻辑层</td>
<td>logic</td>
<td>每次链入$this->logicXXX,都会在logic文件夹中寻找相对XXX逻辑</td>
</tr>
<tr>
<td>模型层</td>
<td>model</td>
<td>每次链入$this->modelXXX,都会在model文件夹中寻找相对XXX模型</td>
</tr>
<tr>
<td>验证层</td>
<td>validate </td>
<td>每次链入$this->validateXXX,都会在lvalidate文件夹中寻找相对XXX验证</td>
</tr>
</tbody>
</table>
```
/**
* 获取逻辑层实例 --魔术方法
*
* @author 勇敢的小笨羊 <brianwaring98@gmail.com>
*
* @param $logicName
* @return \think\Model|\think\Validate
*/
public function __get($logicName)
{
$layer = $this->getLayerPre($logicName);
$model = sr($logicName, $layer);
return VALIDATE_LAYER_NAME == $layer ? validate($model) : model($model, $layer);
}
```