Daily WTF: boolean Werte im switch Konstrukt

5 Kommentare

Na, wer errät die Ausgabe von folgendem Code?

$var = true;

switch($var) {
    case "foobar":
        echo "foobar";
        break;

    default:
        echo "default";
}

Richtig – „foobar“! Vermutlich weil intern („foobar“ == true) gemacht wird und das true ist. ^^

Advertisements

In PHP nur noch Exceptions statt Fehlermeldungen

4 Kommentare

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?

7 Kommentare

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?

Shame on me

2 Kommentare

Hier ist er also, mein Code of Shame:

function getValue($path)
{
    return eval("return \$this->xml_config->$path;");
}

Das ist eine Methode einer Config Klasse die ein SimpleXML Objekt kapselt. Irgendwann hatte ich keine Lust mehr, die einzelnen Werte der Config sicher weiterzuleiten, also hab ich diese Methode hinzugefügt. Naja .. damit hätte ich mir das Config Objekt auch sparen können x) … *shame on me*

Der Developers Shame Day

Hinterlasse einen Kommentar

Am 3. November ist Developer Shame Day – eine Erfindung von Cem dem PHP Hacker. Ich bin dabei… mein Scham-Code ist schon in der Pipeline.

„The Social Network“ – ein Film von und für Programmierer

5 Kommentare

Gestern Abend hab ich den Film „The Social Network“ über Mark Zuckerberg den Gründer von Facebook gesehen. Meiner Meinung nach ein Must-Seen für Programmierer, denn es werden darin (unter anderem) 3 Punkte aufgezeigt, warum sein „Webprojekt“ so erfolgreich war:

1. Finde die simple Idee
Wenn man mal erfolgreiche Ideen/Produkte vergleicht, wird man feststellen, das bei den allermeisten eine simple Idee zugrunde lag, mit welcher sich das entsprechende Produkt von allen anderen abgegrenzt hat. Die Betonung liegt hierbei auf „simpel“ – einfach, unkompliziert, selbsterklärend. (=> KISS)
Bei Facebook war es die Exclusivität, die man plötzlich mit einer niedrigeren Einstiegshürde erreichen konnte und mit der „das wichtigste“ des Uni Alltags virtuell und einfach abgebildet wurde.

2. Geh in den Tunnel
Immer wieder war davon die Rede, eine Person ist gerade im Tunnel und darf deshalb nicht gestört werden. Ich behaupte mal, dass wenn man sich in seine Programmierung vertieft hat, sich also alle Sinne ohne Ablenkung um den Code drehen, ist man 3 mal so effizient, wie wenn man „aus dem Schlaf heraus“ loslegen soll.

3. Begib dich in eine kreative Umgebung
Als schon klar war, das Facebook „cool“ ist (Zitat), ziehen die Entwickler nach Kalifornien. Die erste Szene in deren Haus zeigt, wie Sie Blödsinn man machen und vom Dach des Hauses in einen Pool springen – drinnen hockt einer gerade an nem Rechner.
Wenig später (im gleichen Haus) sind zwei Mädls am Party machen: Playstation, Bong, Saufen. Dahinter hocken ne Handvoll Entwickler im Tunnel.
Ok, das mag etwas übertrieben sein und scheint schon fast sogar Punkt 2 zu widersprechen, aber Inspiration ist nun mal etwas, was nicht von alleine kommt. Kreative Umgebung sieht immer anders aus, jeder hat seine eigenen kreativen Bedürfnisse: Musik, Kunst, Natur… aber wohl eher selten grauer Büroalltag!
Was ich damit sagen will: macht aus eurem Arbeitsplatz eine Umgebung in der ihr euch wohl fühlt.

Natürlich sind das nicht alle Voraussetzungen um erfolgreich zu sein, geschweige denn guten Code zu schaffen. Aber so zumindest das Grundlegende, was man oft übersieht.
Mehr Tipps und Tricks findet ihr im CCD-Wertesystem. :)

PS: ich mag Facebook nicht. Ich glaub ich lösch mich jetzt.

MVC Model geht auch ohne Datenbank!

14 Kommentare

Ich möchte mal ganz kurz etwas Frust über die implementierten MVC Pattern in den ganzen Frameworks loswerden, die ich in meinem kurzen Entwicklerleben verwendet habe:
Warum wird in der abstrakten Schicht der MVC Implementierung immer davon ausgegangen, dass hinter einem Model zwangsläufig eine Datenbank liegt. Ein Model ist doch nur die Abbildung irgendwelcher Daten die wo auch immer her kommen können, oder?! Zum Beispiel können Daten aus einem HTTP Request oder einer statischen Datei kommen, richtig?!

Also wenn dann sollte es einen Mapper geben, der aus der Datenbank die Models zaubert. Aber dass das Model seine eigenen Ursprung kennt finde ich äußerst nervig, denn wenn ich dann mal ein Datenbank unabhängiges Model schreibe, muss ich alle Methoden überschreiben, die irgendwas mit der Datenbank anstellen wollen.

So. Hab ich jetzt MVC falsch verstanden oder einfach nur noch nicht die richtigen Frameworks gefunden?

Older Entries