Christian Seiler: Include_once, require_once

Beitrag lesen

Hallo,

kann man innerhalb eines PHP-Includes feststellen, ob das Include mittels include() oder mittels include_once() vorgenommen wurde?

So, z.B. (funktioniert nur direkt im Script, nicht innerhalb einer Funktion):

$bt = debug_backtrace ();  
if (count ($bt)) {  
  switch ($bt[0]['function']) {  
    case 'include':  
    case 'include_once':  
    case 'require':  
    case 'require_once':  
    case 'eval':  
      // Obiges sollte alles klar sein  
      break;  
    case '__lambda_func':  
      // wurde als Funktionsrumpf in create_function gestopft, z.B. so:  
      // $foo = create_function ('',  
      //   '?>'.file_get_contents('bt2.php').'<?php ;'  
      // );  
      // Und dann als Funktion aufgerufen: $foo ();  
      break;  
    default:  
      // Unbekannter Fall. Eventuell auch wenn irgend ein Optimizer oder  
      // irgend eine komische Extension einem da reinpfuscht.  
      break;  
  }  
} else {  
  // Script direkt aufgerufen  
}

Die Frage ist allerdings: Wozu? Ich wüßte nicht, dass das auch nur ansatzweise sinnvoll sein könnte...

Viele Grüße,
Christian