Methodenaufrufe in PHP caseinsensitiv

Vor einigen Tagen entdeckt und immer noch von diesem „Feature“ verblüfft. :)
Ohne große Worte:

class FOO{
    function bar($msg){
        echo $msg;
    }
}

$f = new foo();
$f->Bar("lol"); //Ausgabe: lol

In PHP nur noch Exceptions statt Fehlermeldungen

Du hast keine Lust mehr auf die doofen Fehlermeldungen in PHP? Dann kannst du das mit set_error_handler erreichen. Davor bitte die Doku dazu lesen!

Hier mal ein Beispiel, wie sowas aussehen könnte:

set_error_handler('throwException', E_ALL);
function throwException($fehlercode, $fehlertext, $fehlerdatei, $fehlerzeile){
    throw new ErrorException($fehlertext, $fehlercode, 0, $fehlerdatei, $fehlerzeile);
}
trigger_error("foo-bar", E_ERROR);

Übrigens erzeugt „trigger_error“ den Fehler nicht weil „trigger_error“ aufgerufen wurde, sondern weil „trigger_error“ „E_ERROR“ als zweiten Parameter nicht akzeptiert. Ein echter E_ERROR also. :)
Leider ist es (noch) nicht möglich, für jeden Fehler Typen einen eigenen Handler zu definieren um zum Beispiel E_NOTICE Fehler anders zu behandeln als E_ERROR. Als zweiten Parameter akzeptiert set_error_handler (laut Doku) nur E_ALL oder E_STRICT. Könnte mir aber gut vorstellen, dass man das irgendwie austricksen kann.
Ich habe übrigens die ErrorException Klasse gewählt, da diese auch Dateiname und Zeile akzeptiert … wenn man diese Info schon mal hat, kann man diese ja auch gleich verwenden.
Als letzten Parameter kann man in der callback Funktion noch „$errcontext“ verwenden – der Inhalt ist bei einer Exception jedoch etwas fehl am Platz.

Nun wünsch ich allen die das wollen viel Spaß, denn damit wird das PHP Standard Fehler Handling ausgehebelt. Sowas wie z.B. „$resource = @fopen($irgendEineDatei);“ funktioniert dann nämlich nicht mehr bzw. ergibt eine schöne Exception falls ein Fehler auftritt. Das ist vor allem dann nervig, wenn man fremden Code einsetzt, der sich auf solche Konstrukte verlässt.

Was spricht gegen Java?

Also wenn ich Artikel wie „Was fehlt dir an PHP?“ (hier vom PHP Gangsta) lese und die Kommentare dazu, frag ich mich: Warum nicht gleich Java nehmen? Was spricht gegen Java?

PHP scheint ja wirklich immer mehr in Richtung Java zu tendieren, vielleicht haben wir bald auch einen Java Zwilling der dann den Vorteil hat, dass er bei fast allen Hostern standardmäßig läuft.
Aber „Hoster“ ist doch nicht so ein großes Argument gegen Java? Einen Root oder vServer (mit Root Rechten) gibt es doch schon ab 10-15 Euro und da lässt sich ja dann auch Java drauf installieren und ich wette, dass es bestimmt einen Java-Hoster gibt, der ein bisschen Platz umsonst anbietet.

Das Problem ist (und da bin ich lange nicht der erste der das sagt), dass PHP keine klare Richtung hat: soll es objektorientierter werden oder weiterhin die einfache Erlernbarkeit und Verwendung fördern?
Wenn OOP gewünscht ist, dann kann man gleich auf Java umsteigen. Wenn PHP weiterhin „Duck-Typing“ und sonstige „fehlertolerante“ Features bietet, dann sollte dieser Stil vielleicht etwas weiter ausgebaut werden (keine Ahnung wie).
Vielleicht ist aber auch gerade dieser OOP-Prozedur-Hybrid Stil das, was PHP so besonders macht?

Ja, auch mir fehlt meistens die feste Typisierung in PHP oder „finally“ beim try-catch und weitere „OOP“ Features. Aber wenn ich das benötige, programmiere ich eben in Java (außer ich bin wie in den meisten Fällen vom System zu PHP gezwungen ;) ).
PHP bevorzuge ich, gerade weil ich damit schnell was zusammen gehackt bekomme.

Aus welchem Grund verwendet ihr lieber PHP als Java?

Follow

Get every new post delivered to your Inbox.