- 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 对语言配置进行扩展
对控制层(control)扩展
- 2021-09-27 11:02:36
- admin
- 1694
- 最后编辑:admin 于 2021-09-28 18:23:47
对现有模块的 control 层的扩展,既可以覆盖重写现有的方法,也可以增加新的方法。下面我们来看下如何进行扩展。
一、文件命名规则
无论是覆盖现有的方法,还是新增方法,扩展文件都是以方法名为名,文件名都是小写。保存到 ext/control 目录下面。
比如以 user 模块为例,我们想重新定义它的注册逻辑,只需要在 module/user/ext/control下面创建 register.php,然后实现代码即可。
如果我们想为 user 模块增加一个开放登录功能,比如叫做 oauth,只需要在 module/user/ext/control下面创建 oauth.php,然后实现代码即可。
二、独立扩展代码
在对 control 层进行扩展的时候,可以完全独立,也可以重用主干代码在 control 里面定义的方法。下面的例子是完全的独立的。
class user extends control { public function register() { $this->view->header->title = 'getsid'; $this->view->sid = session_id(); $this->view->test = $this->misc->test(); $this->display(); } }
请大家注意类名的定义:user,从 control 基类派生而来。这样的定义是完全独立的。
三、继承扩展(推荐)
上面的例子是独立的扩展,但很多时候还想重用禅道原来的代码,则可以通过继承扩展的方式来实现。
include '../../control.php'; class myUser extends user { public function register() { .... $this->process() // process方法是在../../control.php里面定义 } }
首先需要手工包含 ../../control.php,然后类名定义是 myUser(my + 模块名),从 user 类派生而来,这样就可以在 register 方法里面调用 ../../control.php 里面定义的process方法了。
四、限制
由于框架加载机制的限制,control 一个方法只能有一个扩展。