26
2019.2

模块和操作

作者: POPASP
POPASP采用模块和操作的方式来执行,首先,用户的请求会通过入口文件生成一个应用实例,应用控制器(我们称之为核心控制器)会管理整个用户执行的过程,并负责模块的调度和操作的执行,并且在最后销毁该应用实例。任何一个URL访问都可以认为是某个模块的某个操作,例如: ```brush:html '普通模式 http://www.domain.com/App/index.asp?c=User&a=read&id=8 '路由模式,路由模式需在配置文件中进行相关配置才可以使用 http://www.domain.com/?user/read/8 ``` 系统会根据当前的URL来分析要执行的模块和操作。这个分析工作由URL调度器来实现,并且都分析成下面的规范: ```brush:html http://域名/?c=模块名&a=操作名&其他参数 ``` 系统根据URL地址来获取当前需要执行的模块、操作以及其他参数,在某些情况下,项目名可能不会出现在URL地址中(通常情况下入口文件则代表了某个项目,而且入口文件可以被隐藏)。 每一个模块就是一个控制器类,通常位于项目的App/Controller目录下面。类名就是模块名,例如User类就表示了User模块。所以我们在浏览器里面输入 URL: ```brush:html http://localhost/App/index.asp?c=User&a=read&id=1 ``` 其实就是执行了User类的read(公共)方法。控制台/流程 显示: ```brush:html 准备执行 IndexAction.Index 开始执行 IndexAction.Index 执行结束 IndexAction.Index ``` 每个模块的操作并非一定需要有定义操作方法,如果我们只是希望输出一个模板,既没有变量也没有任何的业务逻辑,那么只需要按照规则定义好操作对应的模板文件即可,而不需要定义操作方法。例如,我们在User中如果没有定义help方法,但是存在对应的User/help.html 模板文件,那么下面的URL访问依然可以正常运作: ```brush:html http://localhost/App/index.asp?c=user&a=help ``` 因为系统找不到User类的help方法,会自动定位到User模块的模板目录中查找help.html模板文件,然后直接渲染输出。控制台/流程 会显示: ```brush:html 准备执行 IndexAction.Help 找到模板文件 Index/Help.html ,进行渲染 ``` 如果我们访问一个不存在的操作或者模块,并且也没有渲染到默认定位的模板文件的话,在调试模式下面会抛出异常错误,在部署模式下则会发送404错误,但是可以通过空模块或者空操作方法引导这些页面到你希望的页面,请参考后面的空模块和空操作。