何时考虑执行包含文件?

时间:2015-11-28 20:24:30

标签: php magento

何时考虑执行包含文件?

register_shutdown_function($callback[,$params])

  

在脚本执行完成或调用exit()之后注册要执行的回调

当包含文件中的代码完成或包含它的脚本完成时,是否执行了回调?

我考虑过How exactly is a PHP script executed?

该问题无法解答解释器是将文件编译成一个大文件还是单独执行它们,无论是在演示文稿还是答案中。

关于来源(感谢评论者)。 在magento Varien_Autoload类中有一个构造函数:

public function __construct()
{
    register_shutdown_function(array($this, 'destroy'));//<- this is what the question is about
    $this->_isIncludePathDefined = defined('COMPILER_INCLUDE_PATH');
    if (defined('COMPILER_COLLECT_PATH')) {
        $this->_collectClasses  = true;
        $this->_collectPath     = COMPILER_COLLECT_PATH;
    }
    self::registerScope(self::$_scope);
}

该文件包含在Mage.php中我想知道函数destroy是否在类完成定义后立即执行。在给出一些想法之后,你可以看到函数永远不会被调用(类定义没有实例化),但这并没有减少含义。

1 个答案:

答案 0 :(得分:0)

我在阅读了关于include关键字后测试了它是如何工作的,当主脚本完成时,似乎认为脚本被执行了。

考虑以下代码:

<?php 
$hello = 'Hello';
include 'world.php';

<强> world.php

<?php
register_shutdown_function('world');

function world()
{
    echo ' world!';
}

输出将为Hello world!