Facebook
Twitter
Google+
Kommentare
2

Typisierung in PDT und Zend Studio

Wir alle lieben unsere IDE – zumindest die meiste Zeit. Wer diesen Blog verfolgt kennt auch schon ein paar meiner düstersten Momente die ich mit dem Zend Studio gekämpft habe. Aber auch die beste IDE kann nicht ausbügeln, was auf der Ebene der Programmiersprache nicht funktioniert. Es ist natürlich ganz klar, dass ich über die schwache Typisierung rede. War ja auch dem Titel nach zu erwarten.
Nehmen wir also ein Standardbeispiel. Ich habe ein Attribut einer Klasse und ich weiß genau das diese Variable vom Typ „A“ sein muss, da ansonsten das ganze Klassenkonstrukt nicht klappen würde. Da PHP kein Typehinting auf der Ebene der Attribute unterstützt – ich glaube es ist für eine der nächsten Versionen angedacht – kann ich also nicht auf diese Weise meiner IDE beibringen welche Typen ich gerade bearbeite. Schade eigentlich. Aber natürlich gibt es auch einen Lösungsansatz, ich will hier ja konstruktiv arbeiten. PHPDoc heißt hier das Zauberwort. PHP sind diese kleinen Helferchen natürlich egal, was auch richtig ist, PDT und damit auch das Zend Studio interpretiert diese aber und baut darauf seine Variablen-Informationen auf.

<?php
class A
{
  /*
   * @var B
   */
  private $classBVar;
  public function doSthWithB( )
  {
    $this->classBVar->transmogrify( );
  }
  }
?>

Über dein PHPDoc Kommentar habe ich der IDE jetzt mitgeteilt, dass das Attribut $b vom Typ B ist und siehe da, die Autovervollständigung von Methodennamen funktioniert einwandfrei. Also alles so, als ob man mit einer typsicheren Sprache hantiert. Jetzt haben wir natürlich nur das Problem mit den Attributen gelöst. Lokale Variablen können wir auf diesen Weg nicht definieren, da dieser PHPDoc Syntax nur für Attribute geeignet ist. Aber wie ihr euch schon gedacht habt, gibt es hier auch eine sehr ähnliche Lösung.

<?php
class B
{
  public function transmogrify( )
  {
    $a = $c->getA( );
    /* @var $a A */
    $a->doIt( );
  }
}
?>

Ist also ganz einfach. Jetzt fehlt nur noch eine Art Typehinting für die Rückgabewerte von Methoden. Ich bin aber mal so frei und überlasse euch das selbst es herauszufinden. Aber als Tipp, PHPDoc hilft natürlich auch hier. Ich kann hier leider nur sicher sagen, dass dieser „Trick“ in PDT funktioniert, aber ich denke, dass auch andere IDEs auf PHPDoc hören.

Über den Autor

Nils Langner

Nils Langner ist der Gründer von "the web hates me" und auch der Hauptautor. Im wahren Leben leitet er das Qualitätsmanagementteam im Gruner+Jahr-Digitalbereich und ist somit für Seiten wie stern.de, eltern.de und gala.de aus Qualitätssicht verantwortlich. Nils schreibt seit den Anfängen von phphatesme, welches er ebenfalls gegründet hat, nicht nur für diverse Blogs, sondern auch für Fachmagazine, wie das PHP Magazin, die t3n, die c't oder die iX. Nebenbei ist er noch ein gern gesehener Sprecher auf Konferenzen. Herr Langner schreibt die Texte über sich gerne in der dritten Form.
Kommentare

2 Comments

  1. Rückgabewerte sind in PDT (hab Eclipse 3.3.2 + Eclipse 1.0.3 im Einsatz) kein Problem, die Funktion oder Methode muss nur den phpdoc
    @return DATENTYP
    besitzen.
    Klappt dann problemlos direkt bei der Rückgabe: ($var->getSomeThing()->[] ) oder auch bei der zuweisung ($someThing = $var->getSomething(); $someThing->[])
    In beiden Fällen habe ich dann an der Stelle [] meine auswahlbox für die Variablen und Methoden des Objekts.

    Reply

Leave a Comment.

Link erfolgreich vorgeschlagen.

Vielen Dank, dass du einen Link vorgeschlagen hast. Wir werden ihn sobald wie möglich prüfen. Schließen