परिचय
PHP में मैजिक मेथड्स विशेष मेथड्स होते हैं जो विशिष्ट कार्य करते हैं। इनके नाम डबल अंडरस्कोर (__) से शुरू होते हैं। ये सभी फंक्शन नाम रिजर्व्ड हैं और इन्हें संबंधित मैजिकल कार्यक्षमता के अलावा किसी अन्य उद्देश्य के लिए उपयोग नहीं किया जा सकता। किसी क्लास में मैजिक मेथड public घोषित किया जाना चाहिए। ये मेथड्स इंटरसेप्टर्स के रूप में कार्य करते हैं जो विशिष्ट शर्तें पूरी होने पर ऑटोमैटिकली कॉल किए जाते हैं।
उपलब्ध मैजिक मेथड्स
1. __sleep() - सीरियलाइज़ेशन से पहले
public __sleep(): array
serialize() मेथड चेक करता है कि क्लास में __sleep() फंक्शन है या नहीं। यदि हां, तो सीरियलाइज़ेशन से पहले यह फंक्शन 실행 होता है। यह उन सभी वेरिएबल्स के नामों की सरणी लौटाता है जिन्हें सीरियलाइज़ किया जाना चाहिए।
2. __wakeup() - अनसीरियलाइज़ेशन के बाद
public __wakeup(): void
unserialize() चेक करता है कि __wakeup() मैजिक नाम वाला फंक्शन मौजूद है या नहीं। यदि मौजूद है, तो यह फंक्शन उन संसाधनों को पुनर्निर्मित कर सकता है जो ऑब्जेक्ट के पास हो सकते हैं।
3. __serialize() - कस्टम सीरियलाइज़ेशन (PHP 7.4+)
public __serialize(): array
serialize() यह भी चेक करता है कि क्लास में __serialize() मेथड है या नहीं। यदि है, तो सीरियलाइज़ेशन से पहले यह निष्पादित होता है। यह एक associative array of key/value pairs बनाकर लौटाता है जो ऑब्जेक्ट के सीरियलाइज़्ड रूप को दर्शाता है।
4. __unserialize() - कस्टम अनसीरियलाइज़ेशन (PHP 7.4+)
public __unserialize(array $data): void
unserialize() भी चेक करता है कि __unserialize() मौजूद है या नहीं, और यह __serialize() से लौटाई गई पुनर्स्थापित सरणी को पास करेगा। यह तब उस सरणी से ऑब्जेक्ट की प्रॉपर्टीज़ को उपयुक्त रूप से पुनर्स्थापित कर सकता है।
5. __toString() - स्ट्रिंग प्रतिनिधित्व
public __toString(): string
__toString() मेथड ऑब्जेक्ट के स्ट्रिंग प्रतिनिधित्व का वर्णन करता है। उदाहरण के लिए, echo $obj; क्या प्रिंट करेगा। यह मेथड एक स्ट्रिंग लौटाना अनिवार्य है।
6. __invoke() - ऑब्जेक्ट को फंक्शन की तरह कॉल करना
__invoke([$...]): mixed
यह मेथड तब कॉल होता है जब कोई स्क्रिप्ट किसी ऑब्जेक्ट को फंक्शन की तरह कॉल करने का प्रयास करती है।
7. __set_state() - var_export() के लिए
static __set_state(array $properties): object
यह स्टेटिक मेथड var_export() द्वारा एक्सपोर्ट की गई क्लासेज के लिए कॉल होता है। यह एक पैरामीटर प्राप्त करता है जो एक्सपोर्ट की गई प्रॉपर्टीज़ की सरणी होती है: array('property' => value, ...)।
8. __debugInfo() - var_dump() के लिए डिबग जानकारी
__debugInfo(): array
यह मेथड ऑटोमैटिकली कॉल होता है जब var_dump() किसी ऑब्जेक्ट को डंप करने के लिए निष्पादित होता है, ताकि उन प्रॉपर्टीज़ को प्राप्त किया जा सके जिन्हें दिखाया जाना चाहिए। यदि यह परिभाषित नहीं है, तो सभी public, protected और private प्रॉपर्टीज़ दिखाई जाती हैं।
9-12. प्रॉपर्टी ओवरलोडिंग मेथड्स
| मेथड | सिंटैक्स | विवरण |
|---|---|---|
| __set | public __set(string $name, mixed $value): void | inaccessible या non-existing प्रॉपर्टी में डेटा लिखने पर चलता है |
| __get | public __get(string $name): mixed | inaccessible या non-existing प्रॉपर्टी से डेटा पढ़ने के लिए उपयोग होता है |
| __isset | public __isset(string $name): bool | inaccessible प्रॉपर्टी पर isset()/empty() कॉल होने पर ट्रिगर होता है |
| __unset | public __unset(string $name): void | inaccessible प्रॉपर्टी पर unset() उपयोग होने पर आह्वान होता है |
महत्वपूर्ण नोट
सभी मैजिक मेथड्स को public घोषित किया जाना चाहिए। ये PHP के आंतरिक तंत्र द्वारा स्वचालित रूप से आह्वान किए जाते हैं और इन्हें मैन्युअली कॉल नहीं करना चाहिए।