Nella parte superiore di init.php, è possibile utilizzare debug_backtrace()
per ottenere informazioni sullo stack. Questo ti dirà, tra le altre cose, quale file ha incluso il file corrente e a quale linea.
Questo è un esempio dell'uscita backtrace. Se lo metti in una funzione, avrai un altro livello di dati. Se lo chiami nel file stesso, il livello più in alto ti dice quale file è incluso.
array (size=2)
0 =>
array (size=3)
'file' => string 'fileThatIncudedMe.php' (length=63)
'line' => int 6
'function' => string 'require_once' (length=12)
Si potrebbe avvolgere questo in una funzione di utilità:
function whoIncludedThisFile() {
$bt = debug_backtrace();
$includedMe = false;
while (count($bt) > 0) {
$set = array_shift($bt);
if (
array_key_exists('function', $set) === true &&
in_array($set['function'], array('require', 'require_once', 'include', 'include_once'))
){
$includedMe = array('file'=>$set['file'], 'line'=>$set['line']);
break;
}
}
return $includedMe;
}
print_r(whoIncludedThisFile());
// Array ([file] => topLevelFile.php [line] => 2)
fonte
2015-05-13 14:31:18
State chiedendo perché si vuole codice diverso incluso per situazioni diverse? –
Penso che la frase "codice legacy" dice basta :) So che il file init viene utilizzato, ma non riesco a rintracciare l'esecuzione prima. –