2016-08-24 3 views
0

ich php7 erst vor kurzem ugraded und hatte mein erstes Problem, wenn einige Anwendungen unter Verwendung von try catchPhp 07.05 Fehlerklasse Handhabung

PHP7 seine eigenen Fehlerklasse implementiert nun ein Upgrade den Fehler so der alte Code, die ich hatte zu handhaben :

try { 
    dispatcher::run(new request); 
} catch (Exception $e) { 
    require_once APP_PATH . 'error.php'; 
    $error = new error($e); 
} 

jetzt einen Fehler, da Fehlerklasse wirft bereits definiert:

Cannot declare class error, because the name is already in use in [...] 

nun wurde diese ziemlich leicht nur meine Fehlerklasse Umbenennung gelöst, aber es hatte mich zu fragen, ist gibt es eine Möglichkeit, die Fehlerklasse von 7 zu erweitern, und kann sowohl mit php5 kompatibel sein?

Grüße ...

+0

Keiner dieser Code deklariert eine Klasse. – ceejayoz

+0

@ceejayoz Nein, aber dieser '$ error = new error ($ e);' versucht einen zu instanziieren – RiggsFolly

+0

meine benutzerdefinierte PHP5-Fehlerklassendeklaration ist in der error.php-Datei ... ich dachte, es war nicht nötig, die Deklaration hinzuzufügen zu meiner Frage – Chico3001

Antwort

2

Die kurze ist sollten Sie, dass nicht tun, weil es sich um eine Änderung backwards incompatible ist.

Die lange Antwort ist ja, es ist möglich, aber Sie immer noch sollten nicht tun, weil es immer noch unerwünschte Verhalten führen kann und immer noch Änderungen an Ihrer bestehenden PHP 5-Implementierung erforderlich machen kann. Die Error Klasse in PHP 7 implementiert die gleiche Throwable Schnittstelle, die Exception implementiert. Die Idee war, nur einen unterscheidbaren Weg zu haben, diese Ausnahmen zu identifizieren, die von PHP selbst ausgelöst wurden, und solche, die von Ihrem PHP-Code ausgelöst wurden. Also, was Sie hier tun $error = new error($e) ist im Grunde das Äquivalent von $error = new Exception($e), die mit PHP 5, rückwärts kompatibel wäre, vorausgesetzt, Ihre benutzerdefinierte Error Klasse ist kompatibel mit der Throwable Schnittstelle. Da Sie Ihre Klassenimplementierung nicht angegeben haben, kann ich nicht mit Sicherheit sagen, aber generell, wenn Sie nicht bereits Exception in PHP 5 erweitert haben, bezweifle ich irgendwie, dass es sein wird.

+0

ja du hast Recht, meine Fehlerklasse ist nicht kompatibel mit der umwerfbaren Schnittstelle .... – Chico3001

+1

Also dann ist die Antwort definitiv nein. – Sherif

+0

Ich werde nach einem Tutorial suchen, wie man die Wurfklasser benutzt ... Danke für Ihre Hilfe !! – Chico3001

Verwandte Themen