2010-11-05 6 views
5

Ich bin sehr daran interessiert, eine Reihe unserer Server auf PHP 5.3 zu aktualisieren. Dies wäre für Zend Framework 2 und für die scheinbaren Performance-Updates bereit. Unglücklicherweise habe ich auf diesen Servern große Mengen von Legacy-Code, die mit der Zeit behoben werden, aber nicht alle vor der Migration behoben werden können. Ich überlege, die Funktion zu aktualisieren, aber den veralteten Funktionsfehler auf allen Entwicklungsstandorten zu deaktivieren, wo ich mit der Aktualisierung des alten Codes beginnen kann.Aktualisierung auf PHP 5.3 mit veralteten Funktionen Warnung deaktiviert

error_reporting(E_ALL^E_DEPRECATED); 

Gibt es einen fundamentalen Grund, warum dies eine schlechte Idee wäre?

Antwort

3

Wenn Sie nicht bereits haben, sollten Sie die migration guide mit besonderem Fokus auf Backward Incompatible Changes und Removed Extensions lesen.

Sie haben größere Probleme als veraltet. Ignorieren E_DEPRECATED wird nicht ausreichen. Wegen der inkompatiblen Änderungen gibt es auch andere Arten von Fehlern oder, vielleicht, noch schlimmer, unerwartete Verhaltensweisen.

Hier ist ein einfaches Beispiel:

<?php 
function goto($line){ 
    echo $line; 
} 
goto(7); 
?> 

Dieser Code wird funktionieren und Ausgabe 7 in 5.2.x PHP aber werden Sie einen Parser-Fehler in PHP 5.3.x. geben

Was Sie tun müssen, ist jedes Element in diesem Handbuch zu nehmen und Ihren Code zu überprüfen und gegebenenfalls zu aktualisieren. Um dies schneller zu machen, könnten Sie die veraltete Funktionalität in einer ersten Phase ignorieren und nur die Fehlerberichterstattung für E_DEPRECATED deaktivieren, aber Sie können nicht davon ausgehen, dass Sie nur einige harmlose Warnungen erhalten, wenn Sie in eine andere PHP-Zweigstelle portieren.

Vergessen Sie auch nicht Ihren Hack und beheben Sie die veralteten Probleme so schnell wie möglich.

Grüße,
Alin

Hinweis: Ich habe versucht, die Frage von einem praktischen Standpunkt aus zu beantworten, also nicht mir bitte sagen, dass Warnungen zu ignorieren schlecht ist. Ich weiß das, aber ich weiß auch, dass Zeit keine unendliche Ressource ist.

4

Nun, Sie könnten vergessen, dass Sie die Flagge setzen und sich wundern, warum Ihre Anwendung in einem nächsten PHP-Update bricht. Es kann sehr frustrierend sein, eine Anwendung ohne ordnungsgemäße Fehlermeldung zu debuggen. Das ist ein Grund, an den ich denken kann.

Wenn Sie es jedoch tun, dokumentieren Sie es irgendwo. Es kann Ihnen ein paar Stunden ersparen, bevor Sie überhaupt daran denken, die Flagge zu setzen.

+3

Sobald diese veralteten Features aus PHP entfernt wurden, wird Code, der sie verwendet, E_WARNING oder fatale Fehler erzeugen, so dass es schwer zu übersehen sein wird;) – Mchl

+0

Schön, das wusste ich nicht :). Thx zum Teilen. – TheGrandWazoo

1

Ich nehme an, Sie haben eine Art Testserver? Wenn nicht, sollten Sie wirklich eins einrichten und Ihren Code in PHP 5.3 testen. Wenn Ihr Code vollständig Unit Getestet ist, dauert es nur wenige Sekunden, bis Sie ihn getestet haben, und auch die Fehlerbehebung wird schnell gehen, da Ihnen die Unit-Tests genau sagen werden, wo Sie suchen müssen. Wenn nicht, dann sollten Sie Unit-Tests vor der nächsten Version Priorität einräumen und in der Zwischenzeit alles durchgehen, zuerst mit E_DEPRECATED Warnungen deaktivieren und alles, was auftaucht, reparieren und dann wieder aktivieren, sobald Sie Zeit haben. Sie können auch einen globalen Find-and-Replacement ausführen, um Fehler leichter beheben zu können.