- 1 认识 zentaoPHP 框架
- 2 入口文件
- 3 配置管理
- 4 模块管理
- 4.1 控制器(control)
- 4.2 业务逻辑(model)
- 4.2.1 定义 model
- 4.2.2 跨模块调用
- 4.2.3 获取模块名
- 4.2.4 删除记录
- 4.2.5 数据处理对象 dao
- 4.3 模版视图(view)
- 4.4 从 hello world 开始
- 4.5 模块的配置
- 4.6 模块的语言
- 4.7 模块的 CSS 和 JS 管理
- 5 类库
- 6 扩展机制
- 6.1 扩展机制简介
- 6.2 新增独立模块
- 6.3 对控制层(control)扩展
- 6.4 对模型层(model)扩展
- 6.5 对视图层(view)扩展
- 6.6 对样式表和js进行扩展
- 6.7 对语言配置进行扩展
跨模块调用
- 2021-09-27 11:00:09
- admin
- 1715
- 最后编辑:admin 于 2022-08-08 15:34:54
在开发过程中经常会在当前模块调用其他模块的方法,这个时候就涉及到跨模块调用。在 zentaoPHP 框架中,一个模块的 control 或者 model 都可以直接调用另外一个模块的 model。
zentaoPHP 框架中内置了一个 loadModel() 方法,参数是目标模块名,用来在一个模块中加载另一个模块的业务逻辑 model 对象。即如果存在目标 model.php 文件,则该方法返回其对象,若没有目标文件则返回 false。
模块的 control 和 model 对象都可以调用该方法,加载后,使用 $this->模块名 来访问该 model 对象。
例如:
我想在 index 模块 ceshi 方法中调用 article 模块 model 中的 getList() 方法,代码如下:
public function ceshi() { $data = $this->loadModel('article'); $this->view->articles = $data->getList(); //也可以写成 $this->article->getList() $this->display(); }
注:框架中定义了一个 $loadedModels 变量(二维数组),用来记录/存放已经加载过的应用模块(model 对象)。所以,在调用 loadModel 方法时,会先从 $loadedModels 中查找是否调用过目标模块,如果有则直接从该变量中返回目标 model 对象,否则才走模块调用逻辑。