2013-12-16 8 views
5

In einem PHP-Skript habe ich einige Tests und nach dem Skript die HTML-Seite.Ist die Die() - oder Exit() - Funktion am Ende eines PHP-Skripts erforderlich?

Wenn ein Test fehlschlagen, rufe ich sterben ("Test 1 fehlgeschlagen"); Wenn kein Test fehlschlägt, erreicht das PHP-Skript das Ende?> Und lädt dann den HTML-Code nach dem PHP-Skript.

Ist das ein gutes Verfahren? Oder ich muss sterben() oder exit() vor dem Ende des PHP-Skript schreiben?

+1

Nr Wenn das Skript das Ende erreicht hat, wird es auf jeden Fall verlassen. – George

+0

lesen Sie dies: http: //stackoverflow.com/questions/1795025/what-are-the-differences-in-die-and-exit-in-php? Rq = 1 – Karthik

+1

Es ist nur nützlich, wenn jemand interessiert sein könnte der Rückgabecode Ihres Skripts, wie wenn Sie ihn in einer Shell-Umgebung verwenden. Für die meisten Anwendungen, insbesondere auf Webservern, um Inhalte zu generieren, ist dies gemäß den folgenden Antworten nicht notwendig. – CompuChip

Antwort

5

Nein, Sie müssen das nicht schreiben und das ist nicht Best Practice. Wenn das Skript ohne fatale Errros das Ende erreicht, wird es beendet.

Wenn das bedeutet "testen" für Sie, liegen Sie falsch. Die Prüfung sollte mit unit tests durchgeführt werden. Für PHP gibt es phpunit. Probieren Sie es aus, das ist der richtige Weg, um Ihren Code zu testen.

Bearbeiten: Wie CompuChip in einem Kommentar sagt, ist der einzige nützliche Anwendungsfall für den Exit, wenn Sie ein PHP-basiertes Shell-Skript schreiben, das einen Fehlercode zurückgeben soll. See the parameter section of the documentation for the exit() function.

+0

für test ich meine ich registriere den benutzer zu einer datenbank. Wenn etwas fehlschlägt, ist das ein Test, der fehlschlägt. – newtphp

+0

Dies kann und sollte durch Komponententests getestet werden. Die Art, wie Sie "testen", ist das Debuggen, nicht das Testen. Und anstatt "zu sterben" sollte Ihr Skript eine korrekte Fehlermeldung an den Benutzer weitergeben, aber nicht nur "KilL" das Skript. – burzum

0

Nein, Sie müssen diese Funktionen nicht am Ende des Skripts verwenden, da es am Ende des Skripts existiert.

0

Sie sollten nie die() oder 10 in Ihrer Produktion PHP-Skripten außer in ganz bestimmten Fällen verwenden. Verändern Sie stattdessen Ihre Codepfade, um dem Benutzer einfach eine Fehlermeldung anzuzeigen, anstatt das Skript vorzeitig zu beenden.

-1

Nein! Dies wird nicht empfohlen, es zu verwenden

Verwenden Sie trigger_error oder error_log, um die Tests in Ihrem error.log zu protokollieren. Dann überprüfe es.

+0

Bitte erläutern Sie, warum es nicht empfohlen wird und geben Sie, wenn möglich, eine Quelle dafür an. –

+3

Bearbeitete meine Antwort –

1

Nein, Sie brauchen das nicht, aber wenn Sie Konsolen-PHP-Skripte schreiben, sollten Sie zum Beispiel mit Bash überprüfen, ob das Skript alles richtig gemacht hat. Das ist, wenn Sie exit() oder sterben() verwenden

0

Keine Notwendigkeit, einen Würfel oder einen Ausgang am Ende des Scipt zu setzen. Sie können jedoch exit verwenden, um Ihr Skript mit einem bestimmten Beendigungscode zu beenden (standardmäßig ist es 0).

Z. B

$ php -r "/* does nothing */;" 
$ echo $? 
0 
$ php -r "exit(123);" 
$ echo $? 
123 

http://php.net/exit

+0

nützliche zusätzliche Informationen danke – newtphp

1

Ist die() oder exit() Funktion in dem Ende eines PHP-Skript benötigt?

Nein, PHP wird das Skript selbst beenden. Wenn das Skript eine eingeschlossene Datei ist (aus einer anderen Datei aufgerufen), wird es das Skript in der enthaltenen Datei beenden und dann mit dem Code in der ursprünglichen Datei fortfahren, nach dem Sie eingefügt haben (wenn es einen Code gibt).

So setzen Sie die() oder exit() wo immer Sie wollen oder brauchen.

Zum Testen, legen Sie es nach jedem Block von Code, den Sie testen. Ich benutze sie in einigen Teilen des Testens, wenn ich nur möchte, dass PHP mir etwas zeigt, dann höre auf, wie z. B. ein Array auszudrucken, um sicherzustellen, dass es korrekt aufgebaut ist etc.
zB:

print_r($array); 
exit(); 

Für andere Code-Tests, habe ich manchmal echo nur "Abschnitt A gearbeitet", etc, wie innerhalb von if/else. Wenn ich wissen möchte, ob ein bestimmter Teil des Codes funktioniert oder ob einige Kriterien erfüllt sind oder nicht (im Grunde können Sie verfolgen, wo PHP selbst in Ihren Code eingeht).

Alles, was gesagt wurde, verwenden Sie nicht die() oder exit() in Produktionscode. Sie sollten ein benutzerfreundlicheres und kontrollierteres Messaging-Setup verwenden. Aus Sicherheitsgründen und visuell, da Sie ihnen möglicherweise Informationen wie "ERROR Fehler beim Laden von SomethingSecret" geben könnten. Außerdem sieht es nicht schön aus, wenn Sie nur halb laden und dann eine Fehlermeldung auf dem Bildschirm ausgeben, die für den Endbenutzer wahrscheinlich nichts bedeutet.

a Werden durch diese Zeilen lesen:
PHP Error handling: die() Vs trigger_error() Vs throw Exception

Verwandte Themen