Während der PHP -Entwicklung werden in der Regel externe Dateien eingeführt oder verlangt . Diese Dateien können Funktionen, Klassen oder Konfigurationsdateien enthalten, die uns effektiv helfen können, Code zu organisieren und zu verwalten. Manchmal können wir jedoch auf ein kniffliges Problem stoßen: Bei der Einführung einer Datei wird die Funktion exit () in der Datei ausgeführt, wodurch das gesamte Programm brechen kann. Um dies zu verhindern, benötigen wir einige wirksame Maßnahmen, um unseren Code vor versehentlich unterbrochener zu schützen.
Die Funktion exit () wird verwendet, um die Ausführung des aktuellen Skripts zu beenden und einen Statuscode oder einen String als Parameter übergeben kann. Standardmäßig wird der Statuscode 0 gesendet, der angibt, dass das Skript normalerweise endet. Wenn eine Nummer oder Zeichenfolge ungleich Null übergeben wird, wird sie als Kündigungsstatuscode an das Betriebssystem oder an das externe Programm zurückgegeben, das das Skript aufruft.
Zum Beispiel:
<span><span><span class="hljs-keyword">exit</span></span><span>(); </span><span><span class="hljs-comment">// Normal enden,Rückgabestatuscode 0</span></span><span>
</span><span><span class="hljs-keyword">exit</span></span><span>(</span><span><span class="hljs-string">'Error occurred'</span></span><span>); </span><span><span class="hljs-comment">// Beendigung mit Fehlermeldung</span></span><span>
</span></span>Wenn eine PHP -Datei ausgeführt wird, wird die Ausführung des aktuellen Skripts sofort unterbrochen, wenn exit () aufgerufen wird. Wenn diese Datei von anderen Dateien durch Include oder Forderung eingeführt wird, wird Exit () im Kontext der enthaltenen Datei ausgeführt, wodurch die Hauptdatei, die sie aufgerufen hat, unterbrochen wird, was zu unvorhersehbaren Fehlern führt.
Um zu vermeiden, dass die Funktion exit () bei der Einführung einer Datei versehentlich ausgelöst wird, können wir die folgenden Methoden mitnehmen:
Im Allgemeinen sollte der Anruf von Exit () durch eine bestimmte Geschäftslogik ausgelöst werden. Bei der Einführung von Dateien sollte der Aufruf an Exit () in geeignete bedingte Anweisungen platziert werden, um eine unnötige Ausführung zu vermeiden. Die häufigste Praxis besteht darin, die Beurteilungsbedingungen hinzuzufügen, um sicherzustellen, dass Exit () nur in einer bestimmten Umgebung ausgelöst wird.
Zum Beispiel:
<span><span><span class="hljs-comment">// Angenommen, dies ist eine Konfigurationsdatei,Enthalten exit() Funktion</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">defined</span></span><span>(</span><span><span class="hljs-string">'ALLOW_EXIT'</span></span><span>)) {
</span><span><span class="hljs-keyword">exit</span></span><span>(</span><span><span class="hljs-string">'Script has been terminated.'</span></span><span>);
}
</span></span>In diesem Fall wird exit () nur ausgeführt, wenn die konstante Zulassung undefiniert ist. Wenn Degly_exit vor Einführung der Datei definiert ist, wird exit () nicht ausgelöst.
Einkapseln der Logik der Funktion exit () in eine unabhängige Funktion und festzustellen, ob bestimmte Bedingungen angegeben werden, wenn exit () aufgerufen wird, kann bei der Einführung einer Datei effektiv vermeiden , exit () auszuführen.
Zum Beispiel:
<span><span><span class="hljs-comment">// 在退出时封装一个退出Funktion</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">safe_exit</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$message</span></span></span><span> = </span><span><span class="hljs-string">''</span></span><span>) {
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">some_condition</span></span><span>()) {
</span><span><span class="hljs-keyword">exit</span></span><span>(</span><span><span class="hljs-variable">$message</span></span><span>);
}
}
</span></span>Auf diese Weise können wir safe_exit () direkt anrufen, wo wir beenden müssen, und wir können steuern, ob wir durch die Funktion von SOLE_Condition () beenden sollen.
In PHP -Projekten gibt es normalerweise einige öffentliche Dateien, z. B. Header -Dateien, Datenbankkonfigurationsdateien, Tooldateien usw. Diese Dateien werden am besten direkt vermieden , Exit () aufzurufen () direkt. Wenn Exit () nur in einer bestimmten Geschäftslogik benötigt wird, kann die Exit -Logik durch Funktionen oder Methoden gesteuert werden, und der Umfang der Verwendung von Exit () ist auf bestimmte Geschäftsbearbeitungsmodule beschränkt.
Zum Beispiel:
<span><span><span class="hljs-comment">// Unter normalen Umständen,Nicht in öffentlichen Dateien verwendet exit()</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">terminate_script</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$message</span></span></span><span>) {
</span><span><span class="hljs-keyword">exit</span></span><span>(</span><span><span class="hljs-variable">$message</span></span><span>);
}
</span></span>Durch den Fehlerbehebungsmechanismus von PHP können Ausnahmen und Fehler erfasst werden und die Ausführung von Exit () kann daran gehindert werden, den Betrieb des Hauptprogramms zu beeinflussen. PHP bietet Funktionen wie set_error_handler () und set_exception_handler () , sodass wir die Behandlung von Fehlern und Ausnahmen anpassen können.
Zum Beispiel:
<span><span><span class="hljs-title function_ invoke__">set_error_handler</span></span><span>(function(</span><span><span class="hljs-variable">$errno</span></span><span>, </span><span><span class="hljs-variable">$errstr</span></span><span>) {
</span><span><span class="hljs-comment">// Handhabungsfehler,Vermeiden Sie direkte Ausführung exit</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"An error occurred: <span class="hljs-subst">$errstr</span></span></span><span>";
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-literal">true</span></span><span>;
});
</span></span>Auf diese Weise wird das Programm Exit () , auch wenn in der importierten Datei ein Fehler auftritt, nicht direkt aufgerufen, um das Programm zu unterbrechen, sondern über unsere maßgeschneiderte Fehlerbehandlungsmethode behandelt.
PHP bietet eine Funktion für Ausgabepuffer (Ausgangspufferung), mit der der Ausgangsinhalt vorübergehend speichern und nach dem Programm ausgeführt wurde. Dies kann auch verhindern, dass Exit () unterbrochen wird, wenn die Datei in gewissem Maße eingeführt wird.
Zum Beispiel:
<span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-keyword">include</span></span><span> </span><span><span class="hljs-string">'some_file.php'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">ob_end_flush</span></span><span>();
</span></span>Nach dem Start von OB_Start () wird der Puffer in der Datei vorübergehend gespeichert. Selbst wenn exit () bei der Einführung der Datei auftritt, wird der Ausgabehalt nicht sofort an den Browser gesendet, wodurch Unterbrechungen des Programms vermieden werden.
Bei Verwendung von Bibliotheken oder Frameworks von Drittanbietern müssen wir besonders darauf achten, ob sie Exit () in öffentlichen Dateien anrufen. Einige Frameworks oder Bibliotheken rufen direkt auf EXIT () auf, um das Skript zu beenden, wenn sie auf einen tödlichen Fehler stoßen, was sich auf unsere Anwendung auswirken kann.
Um dies zu vermeiden, können wir Dateien von Drittanbietern überprüfen und anpassen, um sie vorzustellen, um sicherzustellen, dass sie die Programmausführung nicht versehentlich unterbrechen. Wenn Sie feststellen , dass Exit () im Framework oder die Bibliothek häufig aufgerufen wird, können Sie in Betracht ziehen, den Quellcode dieser Bibliotheken zu ändern oder den Entwickler zur Verbesserung zu kontaktieren.
Es ist wichtig, dass die Funktion der Exit () bei der Einführung von PHP -Dateien, insbesondere in großen Anwendungen, versehentlich ausgelöst wird. Eine unsachgemäße Verwendung von Exit () kann zu unbeabsichtigten Unterbrechungen des Programms führen. Durch Einfügen von Exit () in ein bedingtes Urteilsvermögen, das Einkapseln als Funktion, die Verwendung von Fehlerbehandlungsmechanismen und die Verwendung von Ausgangspuffern können wir diese Situation effektiv verhindern und die Stabilität und Zuverlässigkeit des Programms sicherstellen.