am 19. Mai 2010
Irgendwo habe ich vor ‘ner Weile im Netz eine Rubrik auf einem Blog gefunden die ungefähr “Guess what’s happening” hieß. Irgendwie hat mich die Idee fasziniert eine Reihe zu machen in der man einfach mal ein paar PHP Code-Snippets aufschreibt, die sich vielleicht anders verhalten, als man denkt. Heute möchte ich damit starten und habe drei kurze Code-Snippets zusammengestellt. Die Profis von euch werden wahrscheinlich eh auf Anhieb sehen, was passiert.
define( MY_VAR, 'hallo' );
define( MY_VAR, 'welt' );
echo MY_VAR;
Natürlich gibt dieses Codefragment ‘hallo’ aus, denn nach dem ersten Durchgang ist die MY_VAR Konstante gefüllt und kann dann beim zweiten define durch den Wert ersetzt werden. Ich finde es schon fast einen WTF, dass PHP falls eine Konstante nicht existiert den String des Namens übernimmt, aber darüber hatten wir glaube ich schon mal geredet. Vergesst also nie die die Anführungszeichen.
$array = array( 'rot', 'gruen', 'blau');
implode( '-', $array );
implode( $array, '-' );
Einmal die Methode mit Array als erstes und dann die gleiche Methode mit dem Glue als erstes. Man möchte doch eigentlich glauben, dass eine von den beiden Varianten einen Fehler wirft. Nö, nichts da. Beide funktionieren … natürlich aus historischen Gründen. Zum Glück ist diese Art Software zu entwickeln nicht normal geworden. In PHP kann man wirklich so einige Schweinereien umsetzen. Auch im Userspace.
Das dritte Guess what’s happening ist nicht wirklich ein WTF, sondern viel mehr etwas, was mich schon eine Weile interessiert hat (nicht dass man es mal brauchen könnte). Was passiert eigentlich wenn ich eine Klasse gehen zwei Interfaces implementiere, die eine Methode gleich haben. Sowas wie:
interface a
{
public function doSth( );
}
interface b
{
public function doSth( );
}
class C implements a, b
{
public function doSth( )
{
}
}
$class = new C;
Keine Ahnung, ob das mal sinnvoll sein könnte, aber PHP verhindert es mit der Fehlermeldung: Can’t inherit abstract function b::doSth() (previously declared abstract in a). So das war’s auch schon wieder für heute. Ich würde mich freuen, wenn ihr auch solche GWH’s habt und sie mir per E-Mail zukommen lassen könntet. Dann machen wir einen schönen zweiten Teil draus.