2012-12-27 9 views
12

मेरे पास गेटर्स और सेटर्स के साथ एक ऑब्जेक्ट है लेकिन जब मैं इसे किसी फ़ंक्शन में पास करता हूं या इन ऑब्जेक्ट्स के सरणी के माध्यम से पुन: प्रयास करता हूं तो मैं उस ऑब्जेक्ट पर इंटेलिजेंस खो रहा हूं ।फ़ंक्शन या पुनरावृत्त करने के लिए ऑब्जेक्ट पास करते समय phpStorm के साथ काम करने वाले इंटेलिजेंस को कैसे प्राप्त करें

... 
$personA = new Person(..); 
$age = $personA->getAge(); // intellisense works. 

$personArray = array($personA, $personB, ..); 
foreach($personArray as $aPerson){ 
    $aPerson->getAge(); // no intellisense here 
} 

doSomething($personA); 



function doSomething($person){ 
    $person->getAge()   // no intellisense here 
    ... 
} 

मैं यहाँ क्या याद आ रही है:

उदाहरण के लिए

?

क्या मुझे कोड (कास्टिंग .. आदि) में परिवर्तन करने की आवश्यकता है, एक phpStorm सेटिंग गुम है? शायद यह संभव नहीं है?

उत्तर

40

पहले foreach मामले में यह (अभी तक) बॉक्स से बाहर संभव नहीं है के लिए, तथापि आप आम तौर पर संकेत कर सकते हैं कि:

$personArray = array($personA, $personB, ..); 
foreach ($personArray as $aPerson) { 
    /* @var $aPerson Person */ 
    $aPerson->getAge(); // now with code-completition 
} 

किस प्रकार-इशारा चर कि यात्रा ले जा रहा है पर क्या कर रहा है । वैकल्पिक रूप से आप भी प्रकार इशारा सरणी चर पर कर सकते हैं: यह भी सुनिश्चित करता है कि

function doSomething(Person $person) { 
    $person->getAge() // now with code-completition 
    ... 
} 

:

/* @var $personArray Person[] */ 
$personArray = array($personA, $personB, ..); 
foreach ($personArray as $aPerson) { 
    $aPerson->getAge(); // now with code-completition 
} 

अपने दूसरे मामले के लिए, आप पीएचपी प्रकार इशारा (जो मेरा सुझाव है) जोड़ सकते हैं आप केवल उस प्रकार के मानों को पास कर सकते हैं। Type Hinting Docs और Interfaces Docs के साथ-साथ देखें।

/** 
* @param Person $person 
*/ 
function doSomething($person) { 
    $person->getAge() // now with code-completition 
    ... 
} 

कुछ संबंधित जवाब:

+0

महान काम किया। धन्यवाद, यह मुझे पागल कर रहा था! – RayLoveless

+0

धन्यवाद .. यह मुझे बहुत समय बचाता है। – Raj

8

@hakre जवाब से PPHDoc ब्लॉक PHPStorm में काम कर रहा है, वहीं सही रूप प्रकार चर नाम से इस

/** @var Person $aPerson */ 

की तरह पालन किया जाएगा और उस

/** @var Person[] $personArray */ 

ये काम करेंगे PHPStorm और phpDocumentor में।

स्रोत: http://www.phpdoc.org/docs/latest/references/phpdoc/tags/var.html

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

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