2009-08-21 13 views
39

in PHP, wie würde man von einem eingeschlossenen Skript zurück zu dem Skript zurückkehren, wo es enthalten war?Rückgabe von Include-Datei

IE:

1 - Hauptskript 2 - Anwendung 3 -

enthalten

Grundsätzlich möchte ich von 3 auf 2 zurückzukommen, return() funktioniert nicht.

-Code in 2 - Anwendung

$page = "User Manager"; 
if($permission["13"] !=='1'){ 
    include("/home/radonsys/public_html/global/error/permerror.php"); 
    return(); 
} 
+1

Stellen Sie sicher in der mitgelieferten Skript return() auf der obersten Ebene Umfang fordern (dh nicht in einer Funktion) – jscharf

+0

Was passiert, wenn Sie die Rückkehr von Ihrem # 3/included-Skript aufrufen? Können Sie ein Beispiel Ihres Codes posten? – PTBNL

+0

Sicher: $ page = "User Manager"; if ($ erlaubnis ["13"]! == '1') { include ("/ home/radonsys/public_html/global/error/permerror.php "); return(); } – bear

Antwort

93

includeme.php:

$x = 5; 
return $x; 

main.php:

$myX = (include 'includeme.php'); 

Dies ist einer dieser wenig bekannten Features von PHP, aber es kann für die Einrichtung wirklich ganz nett sein, einfach Konfigurationsdateien.

+25

Es sollte darauf hingewiesen werden In den meisten Fällen würde dies als etwas schlechter Codierungsstil angesehen werden, da es die Include-Datei als eine Funktion behandelt.Ein "Standard" -Ansatz wäre es, Funktionen mit einem richtigen Namen in die Include-Datei zu legen, einschließlich der Datei (ohne jede Return-Anweisung außerhalb von Funktionen) und dann die benötigte Funktion aufrufen –

+5

Vorsicht bei der Verwendung von Klammern (dh include ("x.php"; statt "x.php"), wenn es um Rückgabewerte geht. Siehe Beispiel 4 in der PHP-Dokumentation für 'include': http://php.net/manual/en/function.include.php – ravi

+1

Ausgezeichneter Punkt: Normalerweise versuche ich zu vermeiden, Parens auf diese Weise zu verwenden, da sie nicht das bedeuten, was am meisten ist Leute denken, dass sie in diesem Zusammenhang meinen, zB ich einmal sah ein Programmierer kämpfen mit: 'include ('x.php') oder sterben;' –

17

return sollte funktionieren, wie in the documentation angegeben.

Wenn die aktuelle Skriptdatei include() ed oder require() ed ist, wird die Steuerung an die aufrufende Datei zurückgegeben. Wenn die aktuelle Skriptdatei include() ed ist, wird der Wert für return() als Wert des Aufrufs include() zurückgegeben.

6

Hm, die PHP manual stimmt nicht mit Ihnen überein. return sollte Sie aus einer enthaltenen Datei retten. Es funktioniert natürlich nicht innerhalb einer Funktion.

9

Ich weiß, dass dies bereits beantwortet worden, aber ich denke, ich habe eine schöne Lösung ...

main.php

function test() 
{ 
    $data = 'test'; 
    ob_start(); 
     include(dirname (__FILE__) . '/included.php'); 
    return ob_get_clean(); 
} 

included.php

<h1>Test Content</h1> 
<p>This is the data: <?php echo $data; ?></p> 

Ich habe gerade $data um zu zeigen, dass Sie noch Daten an die inkl. Übergeben können Datei, sowie die enthaltene Datei zurückgeben.

3

Siehe Beispiel # 5 in der Dokumentation für include.

Sie können den Rückgabewert des Skripts erhalten, wenn es darunter, wie:

$foo = include 'script.php'; 
+0

Ah, danke! Ja, ich hätte es erraten sollen. –