2012-03-22 11 views
11

मैं नहीं समझ सकता क्यों PhpStorm मुझे इस विधि से अधिक निम्न चेतावनी PHPDoc comment does not match function or method signature देता है:क्यों मैं इस कोड पर PhpStorm में एक phpdoc चेतावनी मिलता है

/** 
* Create a new instance of the class 
* @param string $classname Class to instantiate 
* @return object the instance 
* @throw FactoryException If the class is not instantiable 
*/ 
private function newInstance($classname) { 
    $reflectionClass = new \ReflectionClass($classname); 
    if (! $reflectionClass->isInstantiable()) { 
     throw new FactoryException("The class $classname is not instantiable."); 
    } 
    return new $classname; 
} 

चेतावनी, बहुत विशिष्ट नहीं है मैंने रिटर्न प्रकार को "ऑब्जेक्ट", "मिश्रित" या यहां तक ​​कि "int" (कोशिश करने के लिए) को बदलने जैसी कई चीजों की कोशिश की लेकिन यह नहीं बदला। यहां क्या समस्या है ?

उत्तर

7

यह @throws@throw होना चाहिए।

यदि आप किसी फ़ंक्शन या क्लास की घोषणा के अनुसार /** टाइप करते हैं तो यह आपके लिए एक आधार PHPDoc डालेंगे। इस तरह मैंने अंतर देखा।

enter image description here

+1

मैंने '@ फेंकने की कोशिश की लेकिन चेतावनी अभी भी वहां है (मैंने वही किया जैसा आपने टाइपिंग के साथ किया था/**' लेकिन ऑटो-जेनरेट किए गए डॉकब्लॉक को भी चेतावनी थी)। असल में मेरे पास phpStorm 4.0 का बीटा संस्करण है, शायद यह सिर्फ एक बग है? –

+0

फंकी, हाँ मैं 4.0 का भी उपयोग कर रहा हूं। – MetalFrog

+1

@Matthieu 1) यह निश्चित रूप से ** ** ** होना चाहिए ** इस संबंध में वर्तमान v4 ईएपी बिल्ड (116.101) के साथ कुछ समस्याएं हैं (मैं वही हूं)। जो मैं देखता हूं (आपकी टिप्पणियों के आधार पर) यह फ़ंक्शन कक्षा में है जो किसी अन्य वर्ग या कार्यान्वयन इंटरफ़ेस को बढ़ाता है और यह फ़ंक्शन पैरेंट क्लास/इंटरफ़ेस में ओवरराइड करता है। यदि ऐसा है - तो कृपया उनके लिए PHPDoc ब्लॉक की तुलना करें - भले ही 1 वर्ण अलग है (उदाहरण के लिए "नया उदाहरण बनाएं ..." बनाम "नया उदाहरण बनाएं ...") PhpStorm ऐसी त्रुटि की रिपोर्ट करेगा। – LazyOne

1

इस पद्धति लागू करने के लिए/एक माता पिता के वर्ग जहां एक docblock इसके लिए मौजूद है से ओवरराइड यदि ऐसा होता है, अगर दोनों भर में अपने टैग मैच देखते हैं। आम तौर पर, माता-पिता में टैग बच्चे द्वारा विरासत में प्राप्त किए जाएंगे, जैसे कि यदि माता-पिता की विधि डॉकब्लॉक में पहले से ही वही टैग (पैरा, रिटर्न, फेंकता है) है, तो उन्हें बच्चों के डॉकब्लॉक में सूचीबद्ध करना आवश्यक नहीं है, जब तक कि उन्हें विशेष रूप से आवश्यकता न हो माता-पिता के काम से कुछ अलग कहने के लिए।

+1

यह हो सकता है, लेकिन यह एक निजी विधि है;), यहां कोई ओवरराइड नहीं है –

1

इस लिंक को देखें https://blog.jetbrains.com/webide/2011/05/phpdoc-inspections/ यह है कि उल्लेख किया गया है "निरीक्षण एक समस्या की रिपोर्ट करने पर phpdoc टिप्पणी में वर्णित अनेक मानदंड और/या उनके प्रकार एक इसी समारोह या विधि घोषणा से मेल नहीं खाते"

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