Php Zend框架输出呈现顺序
我试图了解Zend应用程序的工作流程。对于我定义的测试: 控制器-IndexController.php:Php Zend框架输出呈现顺序,php,zend-framework,Php,Zend Framework,我试图了解Zend应用程序的工作流程。对于我定义的测试: 控制器-IndexController.php: public function preDispatch() { error_log('IndexController::preDispatch'); echo 'IndexController::preDispatch <br />'; } public function init() { error_log('I
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 />'; }
public function preDispatch(){
错误日志('IndexController::preDispatch');
echo“IndexController::preDispatch
;”
公共函数init(){
错误日志('IndexController::init');
echo'IndexController::init
';}
公共函数indexAction(){
错误日志('IndexController::indexAction');
回显'IndexController::indexAction
';}
查看脚本-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>
...
。。。
...
这是我的困惑。错误日志输出的顺序与我在浏览器中得到的不同
错误\u日志输出(预期顺序):
- IndexController::init
- IndexController::preDispatch
- IndexController::indexAction
- 布局1
- 布局2
- IndexController::init
- 索引视图脚本-echo
- 索引视图脚本-内容
- IndexController::preDispatch
- IndexController::indexAction
- ZF教程
为什么控制器中的输出在视图脚本之后呈现?是否以某种方式缓冲了预剥离和索引操作的回显结果,以便首先输出视图脚本内容 是的,调度过程中的任何输出都由输出缓冲区捕获并附加到响应中。这看起来可能令人困惑,但您不应该直接在控制器中输出内容(但如果您这样做了,您仍然希望看到它)。您的错误日志列表显示了这些事情的执行顺序,这才是真正重要的。如果您在不应该重复的地方重复某些内容,那么您就是在干扰框架。init或preDispatch不应回显任何内容。该框架使用缓冲区来防止人们做这些愚蠢的事情,请检查php中的ob_start()、ob_get_clean()方法