Was ist die empfohlene error_reporting () Einstellung für die Entwicklung? Was ist E_STRICT?
-
09-06-2019 - |
Frage
Normalerweise verwende ich E_ALL
etwas zu sehen, dass PHP über meinen Code sagen könnte, um zu versuchen und zu verbessern.
Ich habe gerade bemerkt einen Fehler konstant E_STRICT
, sondern haben darüber nie verwendet oder gehört haben, ist dies eine gute Einstellung für die Entwicklung zu benutzen? Das Handbuch sagt:
Laufzeit bemerkt. Aktivieren, um Ihren PHP-Code Änderungen vorschlagen haben, die die beste Interoperabilität und zukünftige Kompatibilität Ihres Codes gewährleisten.
Also ich frage mich, ob ich die beste error_reporting
Ebene mit E_ALL
bin mit oder wäre das zusammen mit E_STRICT
die besten sein? Oder gibt es eine andere Kombination habe ich noch lernen?
Lösung
In PHP 5, die von E_STRICT
bedeckt die Dinge nicht von E_ALL
bedeckt, so die meisten Informationen zu bekommen, die Sie benötigen, sie zu kombinieren:
error_reporting(E_ALL | E_STRICT);
In PHP 5.4 wird E_STRICT
in E_ALL
enthalten sein, so können Sie einfach E_ALL
verwenden.
Sie können auch verwenden
error_reporting(-1);
, die immer aktiviert alle Fehler. Welches ist semantisch korrekt wie:
error_reporting(~0);
Andere Tipps
Verwenden Sie die folgenden in der php.ini:
error_reporting = E_ALL | E_STRICT
Sie sollten auch installieren Xdebug , kann es Ihre Fehler in blendend hellen Farben und Druck nützlich hervorzuheben genaue Information.
Sie niemals einen Fehler oder Hinweis im Code lassen, auch wenn es harmlos.
Meiner Meinung nach ist das höher Sie die Fehlerberichtsebene in der Entwicklungsphase, desto besser.
In einer Live-Umgebung, wollen Sie einen etwas (aber nur leicht) Satz reduziert, aber Sie wollen, dass sie irgendwo angemeldet, dass sie nicht vom Benutzer zu sehen (ich ziehe syslog
).
http://php.net/error_reporting
E_ALL | E_STRICT
für die Entwicklung mit PHP vor 5.2.0.
5.2 stellt E_RECOVERABLE_ERROR
und 5.3 führt E_DEPRECATED
und E_USER_DEPRECATED
. Sie werden wahrscheinlich diejenigen aktivieren möchten, wenn Sie eine dieser Versionen laufen.
Wenn Sie magische Zahlen nutzen wollte setzen Sie könnten nur die error_reporting
Wert bis zu einem gewissen ziemlich hohen Wert von 2^n-1
- sagen wir, 16777215
, und das wäre wirklich nur einschalten alle Bits zwischen 1..n
. Aber ich glaube nicht, magische Zahlen ist eine gute Idee ...
Meiner Meinung nach, hat PHP den Ball ein bisschen, indem E_ALL
fällt wirklich alles nicht sein. Aber anscheinend geht es in PHP 6 festgelegt werden ...
In neueren PHP-Versionen enthält E_ALL mehr Klassen von Fehlern. Seit PHP 5.3 enthält E_ALL alles außer E_STRICT. In 6 PHP wird es alledgedly umfasst auch die. Dies ist ein guter Hinweis. Es ist besser, etwas mehr Fehlermeldungen zu sehen, als weniger
Was in E_ALL enthalten ist in der PHP vordefinierte Konstanten Seite im Online-Handbuch.
Ich persönlich denke, es spielt keine Rolle, dass alles viel, wenn Sie E_STRICT verwenden. Es wird sicherlich nicht weh tun, vor allem, da es Ihnen aus Schreiben von Skripts verhindern kann, dass eine kleine Chance hat, in zukünftigen Versionen von PHP gebrochen zu werden. Auf der anderen Seite, in einigen Fällen strenge Nachrichten können zu laut sein, vielleicht vor allem, wenn Sie in Eile sind. Ich schlage vor, dass Sie es einschalten standardmäßig aktiviert und schalten Sie es aus, wenn es lästig wird.
Sie können error_reporting = -1
verwenden
Es wird immer von allen Bits bestehen (auch wenn sie nicht in E_ALL ist)
Je nach langfristigen Support-Plänen für diesen Code, Debuggen mit E_STRICT
aktiviert kann den Code helfen in der fernen Zukunft, weiter zu arbeiten, aber es ist wahrscheinlich übertrieben für Tag zu Tag Gebrauch. Es gibt zwei wichtige Dinge über E_STRICT
im Auge zu behalten:
- Per der manuellen , die meisten
E_STRICT
Fehler bei der Kompilierung erzeugt werden, nicht die Laufzeit. Wenn Sie die Fehlerstufe steigen innerhalb des CodesE_ALL
(und nicht über php.ini ), können Sie nieE_STRICT
Fehler sehen trotzdem. -
E_STRICT
innerhalbE_ALL
unter PHP 6 enthalten ist, aber nicht unter PHP 5. Wenn Sie Ihren Server PHP6 aktualisieren und konfiguriert habenE_ALL
als 1 oben in # beschrieben, werden Sie beginnen, ohne dass zusätzliche ÄnderungenE_STRICT
Fehler sehen auf Ihrerseits.
streng genommen nicht von error_reporting gesagt, ich würde stark vorschlägt jedes IDE verwenden, das Parsen Fehler und gemeinsame Störungen (zB Zuordnung in Zustand) zeigt automatisch.
Zend Studio for Eclipse hat diese Funktion standardmäßig aktiviert, und da ich begann, es hat mir geholfen, viel bei Fehlern zu kontrollieren, bevor sie auftreten.
Zum Beispiel hatte ich dieses Stück Code, wo ich einige Daten in der $GLOBALS
Variable Cachen wurde, aber ich schrieb versehentlich $_GLOBALS
statt. Die Daten wurden nie im Cache gespeichert, und ich würde nie wußte, ob Zend hat mir nicht gesagt. „Hey, das $_GLOBALS
Dingen nur einmal angezeigt wird, dass ein Fehler sein könnte“
ini_set ( "display_errors", "2"); Error_reporting (E_ALL);