Dies ist nur ein Beispiel zu erklären.Wie bekomme ich einen Pfad vom Anrufer
[./includes/functions.inc.php]
function getPHPResult($path) {
ob_start();
include $path;
$result = ob_get_clean();
return $result;
}
[./pages/a.php]
echo getPHPResult('b.php');
[./pages/b.php]
some php code.
Dieser Code funktioniert nicht.
Da 'b.php'
in a.php ist nicht gültig Pfad in 'getPHPResult'
.
Wenn ich include 'b.php'
in a.php verwende, wird b.php im selben Verzeichnis mit a.php geladen.
Aber wenn ich getPHPResult ('b.php')
in a.php verwende, wird b.php im selben Verzeichnis mit functions.inc.php geladen.
Aber ich will in demselben Verzeichnis laden b.php mit a.php
So sollte ich getPHPResult('b.php')
-getPHPResult('../includes/b.php')
ändern.
Aber es wird nicht funktionieren, wenn a.php
und b.php
in ein anderes Verzeichnis verschoben werden.
Dann möchte ich einen korrekten Pfad in getPHPResult
Funktion finden.
Meine Lösung ist nur debug_backtrace
verwenden.
function getPHPResult($path) {
$backtrace = debug_backtrace(DEBUG_BACKTRACE_PROVIDE_OBJECT, 2);
$dir = dirname($backtrace[1]['file']);
ob_start();
include $dir . '/' . $path;
return ob_get_clean();
}
Aber ich denke, es ist nicht gut.
Wie kann ich einen korrekten Pfad ohne debug_backtrace
finden?
@Ryan Vincent Ich versuche nur eine Template-Engine zu erstellen. Der Code der Spitze ist nur ein Beispiel zu erklären. –