docblock कुछ है कि एक सांकेतिक शब्दों में बदलनेवाला समझाने के लिए क्या एक समारोह, करता है यह, पीएचपी पार्सर द्वारा नजरअंदाज कर दिया जाएगा के रूप में यह सिर्फ एक टिप्पणी है कि यह एक है का उपयोग कर सकते है पा सकते हैं प्रत्येक कार्य और विधि के ऊपर एक डॉकब्लॉक डालने का अच्छा अभ्यास, क्योंकि जब कोई (या आप) कोड पढ़ता है तो यह देखना आसान होता है कि फ़ंक्शन क्या करता है।
एक आईडीई आम तौर पर स्वत: पूर्ण के लिए, docblock तथापि string
और :bool
द्वारा ओवरराइड कर दिया जाएगा करने के लिए जब ब्लॉक कोड
हालांकि
function foo(string $text): bool
{
return true;
}
से मेल नहीं खाता docblock का उपयोग करता है के बराबर नहीं है
/**
* @param string $text
* @return bool
*/
function foo($text) {
return true;
}
:bool
पहले उदाहरण में लागू करता है कि foo()
या तो true
या false
देता है, कुछ भी और PHP उस प्रकार की वापसी को डालने का प्रयास करेगा या घातक त्रुटि फेंक देगा। यह $text
के लिए टाइपहिंट string
के साथ समान है।पहले पैरामीटर, प्रकार तार का एक मान होना चाहिए अन्यथा पीएचपी एक स्ट्रिंग के लिए डाले करने के लिए या एक गंभीर त्रुटि
@return bool
और @param string
कुछ भी नहीं लागू करता है, बस का कहना है कि प्रत्याशित प्रतिफल है फेंक दिया जाएगा कोशिश करता है या तो true
या
function foo(string $a) :bool
{
var_dump($a); // string '10'
return "string";
}
var_dump(foo(10)); // bool true
वहाँ कोई समस्या नहीं है, पीएचपी एक स्ट्रिंग के लिए 10
डाल सकता और "string"
true
नहीं है है: false
निम्नलिखित उदाहरण लें हालांकि
function foo(PDO $a) :bool
{
var_dump($a);
return "string";
}
var_dump(foo(10)); // fatal error, 10 is not PDO and can not be cast to PDO
निम्नलिखित docblock का उपयोग
नोट (क्योंकि आप शायद एक पीडीओ वस्तु के साथ कुछ करने के लिए कोशिश कर रहे हैं शायद आगे पर अन्य समस्याओं में चल रहा है) पिछले एक काम करने के साथ एक समस्या: पीएचपी करता है मिश्रित प्रकार टाइपिंगटिंग (यानी स्ट्रिंग | सरणी) के लिए अभी तक समर्थन नहीं है, जिसे अभी भी इसे डॉकब्लॉक
में निर्दिष्ट करके किया जाना है, क्या आप यह देखने के लिए phpdoc चलाते हैं कि जब आप पैरामीटर और परिणाम प्रकार घोषित करते हैं तो यह कैसा व्यवहार करता है? यह आपको अपना जवाब देगा। –
@ जॉन कॉन्ड, PHP वाक्य इस वाक्यविन्यास को पहचानने में सक्षम नहीं है? –
@MarcBrillault वह क्या कहने का प्रयास कर रहा है: ** इसे आज़माएं और देखें ** – Xatenev