2010-09-18 13 views
9

Ich habe eine Sammlung von benutzerdefinierte Objekte (Podcast) in einem Array.Wie kann ich Intellisense in PHP/Eclipse für benutzerdefinierte Objekte erhalten, die aus dem Array in der foreach-Schleife entfernt wurden?

Wenn ich eine foreach Schleife verwenden, um durch diese Sammlung iterieren, ich habe nicht Code Completion auf der Variable, die das Objekt enthält, gezogen aus der Sammlung (als I in C#/Visual Studio würde beispielsweise) .

Gibt es eine Möglichkeit, PHP einen Typhinweis zu geben, damit Eclipse den Typ des Objekts kennt, das aus der Sammlung herausgezogen wird, damit es mir die Methoden für dieses Objekt in Intellisense zeigen kann?

alt text

<?php 

$podcasts = new Podcasts(); 
echo $podcasts->getListHtml(); 

class Podcasts { 
    private $collection = array(); 

    function __construct() { 
     $this->collection[] = new Podcast('This is the first one'); 
     $this->collection[] = new Podcast('This is the second one'); 
     $this->collection[] = new Podcast('This is the third one'); 
    } 

    public function getListHtml() { 
     $r = ''; 
     if(count($this->collection) > 0) { 
      $r .= '<ul>'; 
      foreach($this->collection as $podcast) { 
       $r .= '<li>' . $podcast->getTitle() . '</li>'; 
      } 
      $r .= '</ul>'; 
     }  
     return $r; 
    } 
} 

class Podcast { 

    private $title; 

    public function getTitle() { return $this->title; } 
    public function setTitle($value) { $this->title = $value;} 

    function __construct($title) { 
     $this->title = $title; 
    } 

} 

?> 

Nachtrag

Danke, Fanis, ich meine FOREACH Vorlage aktualisiert automatisch die Zeile enthalten:

if(count(${lines}) > 0) { 
    foreach(${lines} as ${line}) { 
     /* @var $$${var} ${Type} */ 

    } 
} 

alt text

+0

Gute Sachen :) Gute Verwendung von Vorlagen auch. – Fanis

Antwort

18

Ja, versuchen Sie:

Es ist schon eine Weile her, dass ich Eclipse benutzt habe, aber ich erinnere mich, dass es früher auch dort arbeitete.

+1

das ist so brilliant, danke! –

+0

Gern geschehen! Nur fyi, einige IDEs benötigen möglicherweise einen geeigneten Docblock, dh doppelte Sternchen: '/ ** @var ... * /' – Fanis