2015-11-28 48 views
0

何時考慮執行包含的文件?何時考慮執行包含的文件?

register_shutdown_function($callback[,$params])

註冊腳本執行完畢或退出後要執行的回調()被調用

執行時包含文件結束裏面的代碼或回調時的腳本包括它完成?

我認爲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

你可以看看源代碼。 *「一個大文件」*與*「分開」*是什麼意思?當然,腳本在所有包含完成之後完成,然後是原始腳本本身。否則就沒有意義了。 – m02ph3u5

+0

我正在考慮是否有多個「完成」的功能,比如:「gigg_shutdown_function」 –

+1

從來沒有「多次完成」。 – m02ph3u5

回答

0

我在測試過關於include關鍵字之後如何工作,並且在主腳本完成時,似乎認爲腳本已被執行。

考慮以下代碼:

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

world.php

<?php 
register_shutdown_function('world'); 

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

輸出將是Hello world!

+1

。 ..主腳本完成後,所有資源清理,數據庫連接關閉等... –

+0

謝謝,我真的沒有找到一個簡潔的答案,最接近的是「如何是一個PHP腳本執行?」這是關於如何將其編譯到機器代碼中,而不是它如何在內部工作。 –

相關問題