Was ist die empfohlene error_reporting () Einstellung für die Entwicklung? Was ist E_STRICT?

StackOverflow https://stackoverflow.com/questions/74847

  •  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?

War es hilfreich?

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:

  1. Per der manuellen , die meisten E_STRICT Fehler bei der Kompilierung erzeugt werden, nicht die Laufzeit. Wenn Sie die Fehlerstufe steigen innerhalb des Codes E_ALL (und nicht über php.ini ), können Sie nie E_STRICT Fehler sehen trotzdem.
  2. E_STRICT innerhalb E_ALL unter PHP 6 enthalten ist, aber nicht unter PHP 5. Wenn Sie Ihren Server PHP6 aktualisieren und konfiguriert haben E_ALL als 1 oben in # beschrieben, werden Sie beginnen, ohne dass zusätzliche Änderungen E_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);

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top