PHP में Generics: शुरुआती के लिए उपयोग और ज़रूरत

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

PHP में Generics का परिचय

\n\n

आधुनिक PHP डेवलपमेंट में स्ट्रिक्ट टाइपिंग और कोड सुरक्षा पर बहुत जोर दिया जाता है। PHP 8.0 में आया Generics (सामान्यीकृत प्रकार) एक शक्तिशाली टूल है। अगर आप PHP में नए हैं और यह शब्द पहली बार सुन रहे हैं, तो घबराएं नहीं। इस लेख में हम सरल भाषा में समझेंगे कि Generics क्या हैं, क्यों ज़रूरी हैं, और व्यवहार में इनका उपयोग कैसे करें।

\n\n

एक स्थिति लें: आप एक फंक्शन लिख रहे हैं जो अलग-अलग डेटा टाइप (नंबर, स्ट्रिंग, ऑब्जेक्ट) के साथ काम करे। Generics के बिना आपको या तो mixed का उपयोग करना होगा (जो सुरक्षा कम करता है) या हर टाइप के लिए अलग फंक्शन लिखने होंगे। Generics इस समस्या को सुंदर और प्रभावी ढंग से हल करते हैं।

\n\n

इस लेख में हम जानेंगे:

\n
    \n
  • Generics क्या हैं और उनके मुख्य लाभ
  • \n
  • सामान्यीकृत क्लास और फंक्शन कैसे घोषित करें
  • \n
  • प्रोजेक्ट में वास्तविक उपयोग के उदाहरण
  • \n
  • शुरुआती की सामान्य गलतियाँ और उनसे कैसे बचें
  • \n
\n\n

Generics क्या हैं और क्यों ज़रूरी हैं?

\n\n

Generics के बिना समस्या

\n\n

मान लीजिए आप एक कलेक्शन क्लास बना रहे हैं। Generics के बिना आपको mixed टाइप या हर डेटा टाइप के लिए अलग क्लास बनानी पड़ेगी:

\n\n
<?php\n// खराब तरीका — mixed का उपयोग\nclass Collection {\n    private array $items = [];\n\n    public function add(mixed $item): void {\n        $this->items[] = $item;\n    }\n\n    public function get(int $index): mixed {\n        return $this->items[$index] ?? null;\n    }\n}\n\n// अब गलती से नंबर कलेक्शन में स्ट्रिंग जोड़ सकते हैं\n$numbers = new Collection();\n$numbers->add(42);\n$numbers->add('स्ट्रिंग'); // कोई एरर नहीं, लेकिन लॉजिक गड़बड़ है\n?>
\n\n

यह कोड चलता है, लेकिन असुरक्षित है। आपको नहीं पता कि कलेक्शन में कौन से टाइप के डेटा हैं, और रनटाइम पर एरर आ सकती है।

\n\n

Generics के साथ समाधान

\n\n

Generics आपको बताने देते हैं कि आपकी क्लास, फंक्शन या इंटरफ़ेस किस डेटा टाइप के साथ काम करेगा। सिंटैक्स एंगुलर ब्रैकेट <T> जैसा है, जहाँ T एक प्लेसहोल्डर है:

\n\n
<?php\n// अच्छा तरीका — Generics का उपयोग\nclass Collection<T> {\n    private array $items = [];\n\n    public function add(T $item): void {\n        $this->items[] = $item;\n    }\n\n    public function get(int $index): ?T {\n        return $this->items[$index] ?? null;\n    }\n}\n\n// अब PHP टाइप चेक करेगा\n$numbers = new Collection<int>();\n$numbers->add(42);\n// $numbers->add('स्ट्रिंग'); // Fatal error: Uncaught TypeError\n?>
\n\n

अब PHP कंपाइलर जानता है कि $numbers कलेक्शन में सिर्फ इंटीजर ही हो सकते हैं। स्ट्रिंग जोड़ने की कोशिश करने पर डेवलपमेंट के दौरान ही एरर मिलेगी।

\n\n

Generics के मुख्य लाभ

\n\n
    \n
  • टाइप सुरक्षा (Type Safety) — एरर कंपाइल टाइम पर पकड़ी जाती हैं, रनटाइम पर नहीं।
  • \n
  • कोड पढ़ने में आसानी — तुरंत पता चलता है कि फंक्शन या क्लास किस टाइप के साथ काम करता है।
  • \n
  • डुप्लिकेशन कम करना — एक सामान्यीकृत क्लास दर्जनों विशेष क्लास की जगह लेता है।
  • \n
  • बेहतर IDE सपोर्ट — ऑटो-कम्प्लीशन और सुझाव सही तरीके से काम करते हैं।
  • \n
\n\n

PHP में Generics का उपयोग: व्यावहारिक उदाहरण

\n\n

1. सामान्यीकृत क्लास

\n\n

सबसे आम उपयोग कलेक्शन, स्टैक, क्यू और अन्य डेटा स्ट्रक्चर बनाना है। स्टैक का उदाहरण देखें:

\n\n
<?php\nclass Stack<T> {\n    private array $stack = [];\n\n    public function push(T $item): void {\n        $this->stack[] = $item;\n    }\n\n    public function pop(): ?T {\n        return array_pop($this->stack);\n    }\n\n    public function isEmpty(): bool {\n        return empty($this->stack);\                

ब्लॉग

पुस्तक अनुशंसाएँ