"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > PHP में महारत हासिल करना: टाइप हिंटिंग तकनीकें

PHP में महारत हासिल करना: टाइप हिंटिंग तकनीकें

2024-11-08 को प्रकाशित
ब्राउज़ करें:147

Mastering PHP: Type Hinting techniques
द्वारा तसवीर ???? ??? अनस्प्लैश पर

कुछ लोगों द्वारा टाइप संकेत को सुविधाओं का सबसे महत्वपूर्ण हिस्सा माना जाता है। एक जो सभी प्रोग्रामिंग भाषाओं में होना चाहिए। लंबे समय तक PHP में ऐसी कोई प्रणाली नहीं थी लेकिन अब अधिकांश डेवलपर्स द्वारा इसे व्यापक रूप से अपनाया गया है।

उसने कहा, PHP का टाइप सिस्टम अन्य भाषाओं जितना आगे नहीं जाता है। कई लोग जेनेरिक के रूप में जाने जाने वाली चीज़ों को लागू करते हैं। यह संरचनाओं और संग्रहों के बीच एक प्रकार को लागू करने की क्षमता है। उदाहरण के लिए, जावा में हम यह निर्दिष्ट कर सकते हैं कि Arrays में केवल एक निश्चित प्रकार के आइटम होने चाहिए, उदाहरण के लिए, स्ट्रिंग्स का Array।

शायद किसी दिन हमारे पास PHP में भी यह कार्यक्षमता होगी, लेकिन तब तक हम वास्तव में इसे कुछ अलग तकनीकों के साथ हल कर सकते हैं। बेहतर विवरण की कमी के कारण, मैं इन्हें सॉफ्ट टाइप संकेत और रनटाइम संकेत के रूप में संदर्भित करता हूं।

संकेत टाइप करें

पहला और सबसे स्पष्ट प्रकार के संकेत PHP 7 में पेश किए गए हैं और अभी भी PHP में जोड़े जा रहे हैं। प्रकार-संकेत स्थिरांक केवल PHP 8.3 में जोड़े गए थे।

प्रकार के संकेत यह बताने में मदद करने के लिए उपयोगी होते हैं कि किसी विधि या फ़ंक्शन को पैरामीटर के रूप में क्या पारित करने की आवश्यकता है या वह विधि क्या लौटाएगी। प्रकार संकेत किसी भी वर्ग के हस्ताक्षरों को प्रभावित करने वाले हैं जिनका वे उपयोग करते हैं क्योंकि पहले से स्थापित प्रकार संकेत वाले वर्ग का विस्तार करने का मतलब यह होगा कि उन्हें ओवरराइड नहीं किया जा सकता है।

प्रकारों का पूर्ण उपयोग करने वाले वर्ग का एक उदाहरण होगा:




निश्चित रूप से, हमारे प्रकार के संकेतों में सीमाएं हैं क्योंकि जैसा कि पहले उल्लेख किया गया है, हम एक सरणी को एक ही प्रकार के नहीं बना सकते हैं और इसके बजाय हमें केवल सरणी का उपयोग करना होगा। हम संख्याओं को केवल सकारात्मक या एक निश्चित सीमा के भीतर सीमित नहीं कर सकते।

दूसरा एक क्लोजर हो सकता है क्योंकि PHP के मूल प्रकारों के भीतर अज्ञात कार्यों का वर्णन करने का कोई तरीका नहीं है। इसके बजाय, हमें या तो \Close या callable का उपयोग करना चाहिए। अक्सर कॉल करने योग्य को एक प्रकार के रूप में भी उपयोग करने की अनुमति नहीं होती है।

सौभाग्य से, प्रकार के संकेतों के साथ इन अधिक जटिल परिदृश्यों का वर्णन करने का एक तरीका अभी भी मौजूद है।

नरम प्रकार के संकेत

हमारे अगले प्रकार के संकेत PHPDocs के माध्यम से प्रदान किए जाते हैं। जबकि मूल प्रकार रन टाइम के दौरान अपवाद फेंक देंगे यदि कोई विधि पारित हो जाती है या गलत प्रकार लौटाती है, तो PHPDoc प्रकार के संकेतों का एप्लिकेशन के रनटाइम पर कोई प्रभाव नहीं पड़ता है।

इसके बजाय, जब हम वीएस कोड या PHPStorm जैसे आईडीई का उपयोग कर रहे होते हैं, तो सॉफ्ट प्रकार के संकेत पूरी तरह से हमारी मदद करते हैं, जो हमारे लिए उन प्रकारों का पता लगाएगा। अन्य उपयोग का मामला PHPStan और उसके बाद रेक्टर जैसे स्थैतिक विश्लेषण टूल के साथ है।

सॉफ्ट प्रकारों का उपयोग करने का सबसे बड़ा लाभ यह है कि यह आपको किसी भी पैरामीटर, गुण आदि के प्रकार का अधिक सटीकता के साथ वर्णन करने की अनुमति देता है। उदाहरण के लिए, हम पिछली कक्षा ले सकते हैं और उपयोग किए गए एरे या क्लोजर को समझना आसान बना सकते हैं .




यह सुनिश्चित करने का सबसे अच्छा तरीका है कि आपके सभी प्रकार के उपयोग सही हैं, PHPStan इंस्टॉल करना है। वहां से आपको संभवतः कम से कम स्तर 5 का उपयोग करने की आवश्यकता होगी। इसे निरंतर एकीकरण चरणों के माध्यम से लागू किया जा सकता है जो जांचता है कि प्रकार संकेत सही है।

वास्तव में एक सूची है जिसका उपयोग आप कर सकते हैं यदि आप सही सॉफ्ट टाइप संकेत का उपयोग करना चाहते हैं। इससे भी बेहतर, यदि आप अनिश्चित हैं और एक त्वरित परीक्षण चलाना चाहते हैं, तो एक PHPStan टूल है जिसका उपयोग आप यह जांचने के लिए कर सकते हैं कि PHPStan के अनुसार संकेत देने वाले सभी प्रकार सही हैं या नहीं।

रनटाइम संकेत

प्रकारों का समर्थन करने का हमारा अगला तरीका रनटाइम संकेतों का उपयोग करना है। वास्तव में इसका मतलब पैरामीटर से प्रकारों की जांच करने के लिए अपना स्वयं का कोड निष्पादित करना है। उदाहरण के लिए, हम जांच सकते हैं कि किसी सरणी में केवल एक विशेष प्रकार की वस्तु है या नहीं। यदि ऐसा नहीं होता है, तो हम एक InvalidArgumentException फेंक देते हैं।




वैसे, इस तकनीक को कभी-कभी रक्षात्मक प्रोग्रामिंग के रूप में जाना जाता है। कोड उदाहरण को देखते हुए, यह काफी बोझिल है। यह केवल यह जांचने के लिए बहुत सारे कोड हैं कि कोई सरणी सही है या नहीं। इसीलिए हम अक्सर इसके बजाय लाइब्रेरी का सहारा लेते हैं, इस मामले में वेबमोज़ार्ट/एसर्ट।


composer require webmozart/assert


अब इस पैकेज को स्थापित करके हम इसे एक साधारण वन-लाइनर में छोटा कर सकते हैं।




इस लाइब्रेरी के बारे में एक बड़ी बात यह है कि यदि आप PHPStan में Assert एक्सटेंशन जोड़ते हैं, तो इससे कोड का विश्लेषण करते समय आपके प्रकार के कवरेज में मदद मिलेगी।

निष्कर्ष

निष्कर्षतः, स्वच्छ, रखरखाव योग्य और विश्वसनीय कोड लिखने के इच्छुक डेवलपर्स के लिए PHP में टाइप हिंटिंग में महारत हासिल करना एक आवश्यक कौशल है। जबकि PHP के टाइप सिस्टम में अभी भी अन्य भाषाओं में पाए जाने वाले कुछ फीचर्स का अभाव है, जैसे कि जेनरिक, सख्त टाइपिंग को लागू करने के लिए कई रणनीतियाँ उपलब्ध हैं — चाहे मूल प्रकार के संकेत, PHPDoc एनोटेशन, या रनटाइम चेक के माध्यम से। PHPStan जैसे टूल और Assert जैसी लाइब्रेरी का लाभ उठाने से आपको जटिल परिदृश्यों में भी प्रकार की सुरक्षा सुनिश्चित करने में मदद मिल सकती है। इन तकनीकों को अपने विकास वर्कफ़्लो में एकीकृत करके, आप आत्मविश्वास और सटीकता के साथ PHP की गतिशील प्रकृति को संभालने के लिए बेहतर ढंग से सुसज्जित होंगे।

मैं पीटर फॉक्स हूं, यूके में एक सॉफ्टवेयर डेवलपर जो लारवेल के साथ काम करता है। मेरा लेख पढ़ने के लिए धन्यवाद, मेरे पास https://articles.peterfox.me पर पढ़ने के लिए और भी बहुत कुछ है। मैं अब GitHub पर भी प्रायोजक हूं। यदि आप मुझे इस तरह के और लेख लिखने के लिए प्रोत्साहित करना चाहते हैं तो कृपया एक छोटा सा दान देने पर विचार करें।

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/peter_fox/mastering-php-type-hinting-techniques-3g8e?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] से संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3