Moin!
Hello,
Vernünftige Programmierer arbeiten ohne @.
Könntest Du diese Quirksaussage bitte auch mit vernünftigem[tm] Inhalt füllen?
Wenn du dir die Gesamtaussage aus https://forum.selfhtml.org/?t=177719&m=1170958 nochmal betrachtest, zielte diese in eine andere Richtung, als du jetzt willst.
Wie bekommt man eine aussagefähige Fehlernummer in PHP?
Jedenfalls nicht mit oder ohne @.
Das @ verhindert, dass die eventuell auftretende Fehlermeldung ausgegeben wird. Fehler auf diese Weise zu unterdrücken ist schlecht, weil man als Programmierer von ihnen eigentlich immer Kenntnis haben möchte, um sie von vornherein zu verhindern, sie abzufangen oder zumindest drauf zu reagieren.
Weil es natürlich für den unwissenden Anwender nicht schön aussieht, wenn ihm da mitten in der Seite so eine Fehlermeldung ins Auge springt, hat PHP etliche Methoden integriert, wie man genau das verhindern kann, ohne sich auf das Vorhandensein von @ zu verlassen.
Methode 1:
display_errors = no
log_errors = yes
In Produktivumgebungen gehören Fehler nicht öffentlich angezeigt, sondern in ein Logfile.
Methode 2:
set_error_handler()
Mit einer eigenen Fehlerbehandlungsfunktion kann die Ausgabe von Fehlermeldungen für behebbare Fehler beliebig gestaltet, also auch unterbunden bzw. in eine Datei geloggt werden.
Im übrigen entspricht es meiner Erfahrung, dass sämtliche PHP-Funktionen bei validen Aufrufen je nach Erfolg entweder ein nutzbares Ergebnis oder aber explizit "false" zurückgeben. Ein ungeprüftes Weiterarbeiten mit dem Funktionsergebnis, welches normalerweise als erfolgreich erwartet wird, führt unweigerlich zu vermeidbaren PHP-Fehlermeldungen - der Klassiker dürfte sein, dass mysql_fetch_array() Fehler wirft, weil mysql_query() zuvor gescheitert ist aufgrund eines fehlerhaften SQL-Querys.
Ich kenne nur Text-Fehlermeldungen, die man abfragen kann, wenn man
in der Variablen php_errormsg abholen kann, wenn man track_errors eingeschaltet hat.
Da das @ nichts mit der Abfragbarkeit spezieller Fehlermeldungen zu tun hat, frage ich mich, wie du auf diesen Aspekt kommst.
- Sven Rautenberg
"Love your nation - respect the others."