我正在尝试了解 Zend 应用程序的工作流程。对于我定义的测试:
控制器 - IndexController.php:
public function preDispatch() {
error_log('IndexController::preDispatch');
echo 'IndexController::preDispatch <br />'; }
public function init() {
error_log('IndexController::init');
echo 'IndexController::init <br />'; }
public function indexAction() {
error_log('IndexController::indexAction');
echo 'IndexController::indexAction <br />'; }
查看脚本 - index.phtml:
<?php
echo'index view script - echo';
$this->title = "ZF Tutorial";
$this->headTitle($this->title); ?>
<h3>index view script - content</h3>
布局脚本 - layout.phtml
...
<body>
<div id="content">
<?php
error_log('Layout1');
echo $this->layout()->content ?>
<h1>
<?php
error_log('Layout2');
echo $this->escape($this->title); ?>
</h1>
</div>
</body>
...
这是我的困惑。error_log 输出的顺序与我在浏览器中的顺序不同。
error_log 输出(预期顺序):
- 索引控制器::init
- IndexController::preDispatch
- IndexController::indexAction
- 布局1
- 布局2
浏览器输出:
- 索引控制器::init
- 索引视图脚本 - echo
- 索引视图脚本 - 内容
- IndexController::preDispatch
- IndexController::indexAction
- 采埃孚教程
为什么控制器中的输出在视图脚本之后呈现?来自 preDispatch 和 indexAction 的回显结果是否以某种方式缓冲以首先输出视图脚本内容?