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. ^^

PHP Code Shit – when code really smells

4 Kommentare

Also ich hab ja lang nichts mehr geschrieben weil ich aktuell sehr wenig mit PHP zu tun hab bzw. nur im Zusammenhang mit unserer Software Lösung (evtl. starte ich einen allgemeinen Entwickler Blog oder so .. die Idee muss noch reifen).
Auf jeden Fall sollte ich gerade Fremd-Code analysieren und bin dabei auf ein paar heftige Code-Brocken getroffen, die ich euch nicht vorenthalten möchte. *gg*

#1

$year = date("Y");
$month = date("m");
$day = date("d");
$hour = date("H");
$minute = date("i");
$seconds = date("s");
$SQL = 'INSERT INTO '.$table.' VALUES ('.$id.','.$year.','.$month.','.$day.','.$hour.','.$minute.','.$seconds.')';

..wenn’s ganz schlecht läuft, wird die Sekunde aus der nächsten Minute sein oder sogar der Monat aus dem nächsten Jahr, dann ist Ende 2012 ganz kurz wieder 1. Januar 2012. :)

#2

//DEFINE NUMBERS
$numbers[] = "1";
$numbers[] = "2";
$numbers[] = "3";
$numbers[] = "4";
$numbers[] = "5";
$numbers[] = "6";
$numbers[] = "7";
$numbers[] = "8";
$numbers[] = "9";
$numbers[] = "0";

$n = 0;
while(isset($numbers[$n])){
    // use $numbers[$n]
    $n++;
}

^^

#3

//...
$page = $template->renderHtml();

$infoColumnPos = strpos($page, '<div id="infoColumn">');
$infoColumnEnd = strpos($page, '</div>', $infoColumnPos)+6;
$infoColumnLength = $infoColumnEnd - $infoColumnPos;
$page = substr_replace($page, "", $infoColumnPos, $infoColumnLength);

echo $page;

Äh … wofür sind nochmal Templates da?

Methodenaufrufe in PHP caseinsensitiv

4 Kommentare

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