Pythons Konvention besteht darin, dass Variablen durch die erste Zuweisung erstellt werden und der Versuch, deren Wert zu lesen, bevor einer zugewiesen wurde, eine Ausnahme auslöst. PHP erstellt dagegen implizit eine Variable, wenn sie gelesen wird, mit einem Nullwert. Dies bedeutet, dass es in PHP einfach ist:
%Vor% Diese Funktion gibt immer null zurück, und wenn null ein gültiger Wert für die Funktion ist, kann der Fehler für einige Zeit unerkannt bleiben. Das Python-Äquivalent würde sich beschweren, dass die Variable resukt
verwendet wird, bevor sie zugewiesen wird.
Also ... gibt es eine Möglichkeit, PHP so zu konfigurieren, dass es bei Variablenzuweisungen strenger wird?
PHP macht beim Überprüfen der Dinge zur Zeit des Parsens nicht viel Zeit.
Das Beste, was Sie tun können, ist, die Warnstufe hochzufahren, um Ihre Fehler zu melden, aber wenn Sie ein E_NOTICE erhalten, ist es zu spät und es ist nicht möglich, E_NOTICES im Voraus zu erzwingen.
Viele Leute haben das Flag "error_reporting E_STRICT", aber es ist immer noch eine rückwarnende Warnung, und schützt Sie nicht vor fehlerhaften Code-Fehlern, wie Sie sie geschrieben haben.
Dieses Juwel ist diese Woche auf der Mailingliste von php-dev aufgetaucht und ich denke, es ist genau das Werkzeug, das du willst. Es ist mehr ein lint-checker, aber es fügt der aktuellen lint-Prüfung, die PHP tut, Spielraum hinzu.
PHP-initialisiertes Google-Projekt
Es besteht die Hoffnung, dass wir dieses Verhalten mit ein bisschen Aufmerksamkeit in PHP selbst implementieren können. Setzen Sie Ihre 2-Cent-Punkte auf die PHP-Mailingliste / Bug-System / Feature-Anfragen und sehen Sie, ob wir deren Integration fördern können.
Es gibt keine Möglichkeit, es zu scheitern, so weit ich weiß, aber mit E_NOTICE in error_reporting Einstellungen können Sie es eine Warnung werfen (gut, eine Notiz :-) Aber immer noch eine Zeichenfolge, die Sie suchen können).
Schauen Sie sich Fehlerberichte an, Ссылка
Was Sie wollen, ist wahrscheinlich E_STRICT. Denken Sie nur daran, dass PHP keine Namespaces hat und die Fehlerberichterstattung global wird. Irgendwie nervt es dich, wenn du eine 3rd-Party-Bibliothek von Entwicklern benutzt, die keine Fehlerberichterstattung eingeschaltet haben.
Es gibt etwas ähnliches: In PHP können Sie die Fehlermeldungsstufe ändern. Es ist eine bewährte Methode, das Maximum in einer Entwicklungsumgebung festzulegen. Um dies zu tun:
Fügen Sie Ihre PHP.ini hinzu:
%Vor%Sie können dies auch ganz oben in der Datei hinzufügen, an der Sie gerade arbeiten:
%Vor%Dies wird nicht verhindern, dass Ihr Code ausgeführt wird, aber das Fehlen von Variablenzuweisungen zeigt eine sehr deutliche Fehlermeldung in Ihrem Browser an.
Wenn Sie den "Analyze Code" für Dateien oder Ihr Projekt in Zend Studio verwenden, werden Sie vor nicht initialisierten Variablen gewarnt (das hat tatsächlich dazu beigetragen, eine Menge falsch geschriebener Variablen zu finden, die in selten verwendeten Teilen des Codes nur darauf warten, verursacht zu werden) sehr schwer zu erkennen Fehler). Vielleicht könnte jemand diese Funktionalität in der PHP-Lint-Funktion (php -l) hinzufügen, die derzeit nur nach Syntaxfehlern sucht.
Tags und Links php