【问题标题】:Why doesn't exit() in a base class terminate child classes?为什么基类中的 exit() 不终止子类?
【发布时间】:2017-12-09 14:04:31
【问题描述】:
在基类的 OnConstruct() 方法中,我在重定向到错误页面后使用 exit() 函数来终止后续代码,包括所有子类的代码。
Here is my code
但它不起作用。下面是伪代码:
- 当我访问页面 'child/index' 时,它重定向到错误页面,并且我在 '/tmp/debug.log' 文件中有两行:
- 访问:基类的构造
- 访问:子类的索引
不知道为什么会打印子类中的字符串“access: index of child class”。我的目的是在 exit() 之后终止所有内容,包括所有子类。
【问题讨论】:
标签:
php
class
exit
phalcon
【解决方案1】:
直接来自controller documentation。
请注意 onConstruct() 方法会被执行,即使操作
被执行的控制器中不存在或用户没有
访问它(根据提供的自定义控制访问
开发人员)。
initialize() 方法仅在 beforeExecuteRoute 事件发生时调用
成功执行。这避免了应用程序中的逻辑
未经授权不能执行初始化程序。
我建议使用在事件和控制器上触发的event beforeExecuteRoute,如果您返回 false,则允许您停止执行。
public function beforeExecuteRoute(Dispatcher $dispatcher)
{
return false; //stop operation
}