2010-09-18 5 views
9

मेरे पास कस्टम ऑब्जेक्ट्स (पॉडकास्ट) का एक सरणी है।फ़ोरैच लूप में सरणी से निकाले गए कस्टम ऑब्जेक्ट्स पर PHP/ग्रहण में इंटेलिजेंस कैसे प्राप्त किया जा सकता है?

जब मैं एक foreach पाश का उपयोग इस संग्रह के माध्यम से पुनरावृति करने के लिए, मैं चर उस वस्तु में शामिल है पर कोड पूरा होने नहीं है खींच लिया संग्रह से बाहर (के रूप में मैं उदाहरण के लिए/VisualStudio सी # में होगा) ।

क्या पीएचपी को एक प्रकार का संकेत देने का कोई तरीका है ताकि ग्रहण संग्रह से निकाले गए वस्तु के प्रकार को जानता हो ताकि यह मुझे उस वस्तु पर इंटेलिजेंस में विधियों को दिखा सके?

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

} 

?> 

परिशिष्ट

धन्यवाद, Fanis, मैं अपने foreach टेम्पलेट स्वचालित रूप से उस लाइन के साथ अपडेट:

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

    } 
} 

alt text

+0

अच्छी चीजें :) टेम्पलेट का भी अच्छा उपयोग। – Fanis

उत्तर

18

हाँ, कोशिश:

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

यह कुछ समय हो गया है क्योंकि मैंने ग्रहण का उपयोग किया था, लेकिन मुझे याद है कि यह वहां भी काम करने के लिए उपयोग किया जाता है।

+1

जो बहुत शानदार है, धन्यवाद! –

+0

आपका स्वागत है! बस fyi, कुछ आईडीई को उचित डॉक्लॉक की आवश्यकता हो सकती है, यानी डबल तारांकन: '/ ** @var ... * /' – Fanis

संबंधित मुद्दे