2010-09-18 28 views
9

Tôi có một bộ sưu tập gồm các đối tượng tùy chỉnh (Podcast) trong một mảng.Làm thế nào tôi có thể nhận được intelliSense trong PHP/Eclipse trên các đối tượng tùy chỉnh được rút ra khỏi mảng trong vòng lặp foreach?

Khi tôi sử dụng một foreach vòng lặp để lặp qua bộ sưu tập này, tôi không có mã hoàn thành trên biến có chứa các đối tượng đã rút khỏi bộ sưu tập (như tôi sẽ trong C#/VisualStudio ví dụ) .

Có cách nào để cung cấp cho PHP một gợi ý kiểu để Eclipse biết loại đối tượng được kéo ra khỏi bộ sưu tập để nó có thể chỉ cho tôi các phương pháp trên đối tượng đó trong intelliSense không?

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

} 

?> 

Phụ Lục

Cảm ơn, Fanis, tôi cập nhật mẫu foreach tôi để bao gồm dòng tự động:

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

    } 
} 

alt text

+0

Công cụ tốt :) Sử dụng tốt các mẫu quá. – Fanis

Trả lời

18

Có, hãy thử:

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

Đã một thời gian kể từ khi tôi sử dụng Eclipse nhưng tôi nhớ lại nó đã từng hoạt động ở đó.

+1

thật tuyệt vời, cảm ơn! –

+0

Bạn được chào đón! Chỉ cần fyi, một số IDE có thể yêu cầu một docblock thích hợp, tức là dấu hoa thị kép: '/ ** @var ... * /' – Fanis

Các vấn đề liên quan