Kann alles. Weiß alles. Macht alles.

Vorab: Ja, ich habe Super Bowl geguckt, allerdings nur bis zur Halbzeit. Meine Freundin drehte sich gegen 1:30 Uhr um, ließ ein “Du bist doch verrückt! Und morgen schläfst du wieder den ganzen Tag!” von sich und schlief wieder ein. Tja und weil ich jetzt auch nicht den Zugang zum American Football habe und heute noch was machen wollte, habe ich dann bis zum Ende des 2. Quarters geguckt. Bis dahin war’s ein großartig Spiel und dass die Underdogs aus New Orleans gewonnen haben, freut mich. Zur Halbzeitshow von “The Who” (nicht zu verwechseln mit der WHO [World Health Organization]) hab ich noch gar nichts gehört, aber sie werden wahrscheinlich eh ihre bekannten Hits wie Pinball Wizard oder Substitute gespielt haben.

Im deutschen Fernsehen kann man natürlich nicht die amerikanischen Werbespots sehen, weil öffentlich-rechtlicher Sender und die Spots sind ja auch für den amerikanischen Markt designt, trotzdem gibt’s auch dieses Jahr einige Leckerbissen, die ich hier präsentieren will. Meine (absolut subjektiven) Top 5:

Platz 5: Die Simpsons im Cola Werbespot

(direkt schauen)

Platz 4: Awesome + Awesome = Awesomer

(direkt schauen)

Platz 3: Gestrandet

(direkt schauen)

Platz 2: Snickers Football

(direkt schauen)

Platz 1: VW Spot

(direkt schauen)

Alle Spots gibt es in diesem YouTube-Kanal.

Ja, die Welt ist leider nicht so ganz einfach. Nachdem ich in diesem Beitrag über die Typisierung von Klassenattributen etwas geschrieben habe, dachte ich, dass man Variablen in der foreach-Schleife ebenfalls so typisieren kann. Felix’ IDE kann das wohl auch mit folgender Methode

foreach($this->kunden as $kundeData)
{
    /**
    @var Kunde
    */
    $kunde = $kundeData['kunde'];
    [...]
}

NetBeans kriegt es allerdings so nicht hin, dort muss man diesen Code verwenden:

foreach($this->kunden as $kundeData)
{
    /* @var $kunde Kunde */
    $kunde = $kundeData['kunde'];
    [...]
}

Und zwar genau mit oben angegebenen Format. Sobald eine Abweichung drin ist (ein Slash zu viel), geht’s schon nicht mehr. Sehr entwicklerfreundlich! :)

[via NetBeans Blog]

AlstereisvergnügenIch ärgere mich ja etwas. In der dazugehörigen Facebook Gruppe wurden letztes Wochenende wirklich schöne Bilder von der vereisten Alster mit tausenden Leuten drauf geschossen. Das offizielle Alstereisvergnügen mit Buden für heiße Getränke etc. fand zwar noch nicht statt, aber das Eis hielt.

Anstatt dieses einmalige Erlebnis, das nur alle 15 Jahre mal vorkommt (wegen der Klimaerwärmung wahrscheinlich noch seltener), wahrzunehmen, habe ich darauf gehofft, dass es so lange kalt ist, bis meine Freundin wieder da ist und wir zusammen auf die Alster gehen können. Jetzt war es die letzten Tage aber sehr warm und ich fühle mich wie ein Börsianer, der den Hals nicht vollkriegen konnte und seine Aktien auf Höchststand nicht verkauft hat..

Hoffen wir, dass die Kälte nochmal wieder kommt und es auch für mich ein Alstereisvergnügen 2010 gibt. ;)

Hier gibt’s übrigens ein klasse 360° Panorama-Blick von der zugefrorenen Alster.

.. Ähh. Ja.. Nicht, was du wieder meinst… Ein sehr kreativer Aufklärungsspot aus Frankreich: ;)


(direkt schauen)

Die Überschrift hört sich komplizierter an als sie ist. Veranschaulichen wir das Problem mal an einem Beispiel. Ich habe eine Klasse Erde, Mars, Venus etc. Diese Klassen sehen so aus:

class Erde{
var $name;
var $groesse;
var $avgEntfernungZurSonne;
var $bevoelkerung;
...

function __construct(...) {
...
}

function eineFkt(...) {
...
}
}

Nun habe ich noch eine Klasse Sonnensystem. Und diese Klasse soll als Attribute die einzelnen Planeten beinhalten, also:

class Sonnensystem{
var $erde;
var $venus;
var $mars;
...

function __construct($erde, $venus,...) {
$this->erde = $erde;
$this->venus = $venus;
...
}

function gebReihenfolgeDerPlanetenAbSonne() {
$arrayEntfernung =
($this->erde->name => $this->erde->avgEntfernungZurSonne,
$this->venus->name => $this->venus->avgEntfernungZurSonne,
...) ;
...
}
}

Das Problem ist jetzt, dass NetBeans in Sonnensystem::gebReihenfolgeDerPlanetenAbSonne() nicht weiß, von welchem Typ die Variablen $this->erde und $this->venus sind. Denn die werden ja nirgendwo genauer in der Klasse Sonnensystem spezifiziert. Folglich kann mir NetBeans auch nicht vorschlagen, welche Attribute/Methoden ich bei $this->erde aufrufen möchte. Das finde ich allerdings extrem schwach, denn genau deswegen setze ich ja ein IDE ein.

Mir sind zwar bei Recherchen Schlagwörter wie z.B. Typehinting über den Weg gelaufen, aber das könnte ich ja nur im Konstruktor einsetzen und dann wäre nur dort sicher gestellt, dass $erde eine Instanz der Klasse Erde ist und hilft folglich nicht wirklich weiter.

Also, mal konkretisiert: Wie kann ich in PHP festlegen, dass ein Attribut von einem bestimmten Typ ist. So zumindest nicht:

class Sonnensystem{
var Erde $erde;
...

Update + Update + Update + Update
Damit die IDE NetBeans weiß, von welchem Typ ein Klassen-Attribut ist, muss man PHPDoc-Kommentare verwenden:

class Sonnensystem{
/**
* @var Erde
**/
private $erde;
...

Felix schlug dann noch vor, das Attribut auf “private” zu setzen und dann im Konstruktor mit TypeHinting zu arbeiten. Das funktionierte bei mir in NetBeans allerdings nicht. Da scheint es also Unterschiede zwischen den IDEs zu geben.

Tag Cloud