2010-09-18 10 views
9

Mam kolekcję niestandardowych obiektów (Podcast) w tablicy.Jak mogę uzyskać intellisense w PHP/Eclipse na niestandardowych obiektach wyciągniętych z tablicy w pętli foreach?

Kiedy używam foreach pętli do iterację tej kolekcji nie mam uzupełniania kodu o zmiennej zawierającej obiekt wyciągnięty z kolekcji (jak bym w C#/VisualStudio na przykład) .

Czy istnieje sposób na podanie podpowiedzi typu PHP, aby Eclipse znał typ obiektu wyciągniętego z kolekcji, aby mógł pokazać mi metody na tym obiekcie w intellisense?

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; 
    } 

} 

?> 

Uzupełnienie

Dzięki Fanis, ja updated mój szablon foreach włączenie tej linii się automatycznie:

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

    } 
} 

alt text

+0

Dobre rzeczy :) Dobre wykorzystanie szablonów też. – Fanis

Odpowiedz

18

Tak, spróbuj:

foreach($this->collection as $podcast) { 
    /* @var $podcast Podcast */ 
    $r .= '<li>' . $podcast->getTitle() . '</ 
} 

Minęło trochę czasu odkąd użyłem Eclipse, ale pamiętam, że kiedyś tam pracował.

+1

który jest tak genialny, dzięki! –

+0

Nie ma za co! Po prostu niektóre IDE mogą wymagać odpowiedniego dokumentu, tj. Podwójnej gwiazdki: '/ ** @var ... * /' – Fanis

Powiązane problemy