ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
#model 通过加载器加载并返回一个model的实例。 函数原型 ```php /** * 获取一个model * @param $model string * @param $parent CoreBase */ function model($model, $parent) ``` 其中$model是Model的类名,根据SD的传统该类优先在app/Models中寻找,如果不存在则在Server/Models中寻找。 $parent是调用的容器,一般都是传入$this。 例子: ```php public function test_model() { $testModel = $this->loader->model('TestModel',$this); $testModel->timerTest();# Model Model是专门和数据打交道的模块。 ## 协程模式 model中可以调用redis,mysql,task的协程模式,但是请注意,如果model是使用协程的,那么controller或者model调用这个包含协程model接口时,也要加上yeild关键字。 例子: ```php public function http_testCoroutine() { $this->testModel = $this->loader->model('TestModel', $this); $result = yield $this->testModel->test_coroutine(); $this->http_output->end($result); } ``` ##Model层级 1.7.4版本支持深层级的Model。 ```php $this->testModel = $this->loader->model('Test/TestModel', $this); ``` 如上会调用Test目录下TestModel,请注意命名空间的规范。 在1.7.4版本之前需要这样 ```php $this->testModel = $this->loader->model('Test\\TestModel', $this); ``` $this->destroy(); } ``` #注意 在1.7.5版本之前loader->model不允许出现循环loader,比如A加载了B,B又加载了A,又或者A加载了A,这种会引发严重的服务器故障,出现死循环问题。 1.7.5版本后框架会自动发现这种情况并会将上层的实例直接传回。 比如A->B->C->A这种,C里面的A其实就是最初的A。