एक भाषा में दो दुनियाएँ: यह क्यों महत्वपूर्ण है?
\nजब हम PHP के बारे में बात करते हैं, तो तुरंत क्लासिकल ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण (OOP) दिमाग में आता है। क्लासेस, इनहेरिटेंस, एनकैप्सुलेशन — यह वह आधार है जो सभी कोर्सेज में सिखाया जाता है। लेकिन सिक्के का दूसरा पहलू भी है — फंक्शनल दृष्टिकोण। और क्या आप जानते हैं? PHP दोनों कर सकता है, और बहुत अच्छी तरह से।
\nइस लेख में हम यह बहस नहीं करेंगे कि क्या बेहतर है। हम समझेंगे कि कब और कौन सा दृष्टिकोण उपयोग करना चाहिए, ताकि आपका कोड न केवल सुंदर हो बल्कि तेज़ भी हो। यदि आप PHP में लिखते हैं और "बस काम करता है" से आगे जाना चाहते हैं — तो यह आपके लिए है।
\n\nऑब्जेक्ट-ओरिएंटेड PHP: क्लासिक जो कभी पुराना नहीं होता
\nPHP में OOP संरचना और पुन: उपयोग के बारे में है। आप क्लासेस बनाते हैं जो आपके एप्लिकेशन की संस्थाओं का वर्णन करती हैं: उपयोगकर्ता, ऑर्डर, उत्पाद। प्रत्येक क्लास अपने जिम्मेदारी क्षेत्र के लिए जिम्मेदार होता है।
\n\nउदाहरण: OOP के माध्यम से उपयोगकर्ता के साथ काम करना
\nआइए एक सामान्य उदाहरण देखें। मान लीजिए, हमें एक उपयोगकर्ता बनाना है और उसे स्वागत ईमेल भेजना है।
\n<?php\nclass User {\n private string $name;\n private string $email;\n\n public function __construct(string $name, string $email) {\n $this->name = $name;\n $this->email = $email;\n }\n\n public function sendWelcomeEmail(): void {\n $subject = "स्वागत है, {$this->name}!";\n $message = "नमस्ते, {$this->name}. आपको हमारी साइट पर देखकर खुशी हुई।";\n mail($this->email, $subject, $message);\n }\n\n public function getName(): string {\n return $this->name;\n }\n}\n\n$user = new User("इवान", "ivan@example.com");\n$user->sendWelcomeEmail();\necho "ईमेल उपयोगकर्ता को भेजा गया: " . $user->getName();\n?>\nयहाँ सब कुछ तार्किक है: डेटा (नाम, ईमेल) और विधियाँ (ईमेल भेजना) एक ही स्थान पर हैं। यह तब सुविधाजनक होता है जब आपके पास एक ही संस्था के साथ कई अलग-अलग ऑपरेशन हों।
\n\nPHP में OOP के लाभ
\n- \n
- पठनीयता: कोड तार्किक ब्लॉकों में विभाजित है, आवश्यक विधि आसानी से मिल जाती है। \n
- इनहेरिटेंस: एक बेस क्लास बनाकर उसका विस्तार किया जा सकता है। \n
- एनकैप्सुलेशन: डेटा आकस्मिक परिवर्तन से सुरक्षित रहता है (private/protected)। \n
- पॉलीमॉर्फिज्म: एक इंटरफ़ेस — अलग-अलग कार्यान्वयन। \n
OOP के नुकसान
\n- \n
- अतिरेकता: एक सरल कार्य (जैसे, स्ट्रिंग को फ़ॉर्मेट करना) के लिए क्लास लिखना ओवरकिल है। \n
- अवस्था: ऑब्जेक्ट अवस्था संग्रहीत करते हैं, जो म्यूटेशन पर ध्यान न देने पर बग का कारण बन सकता है। \n
- मेमोरी: प्रत्येक ऑब्जेक्ट एक साधारण फंक्शन से अधिक मेमोरी लेता है। \n
फंक्शनल PHP: न्यूनतमवाद और शुद्धता
\nPHP में फंक्शनल प्रोग्रामिंग केवल "फंक्शन लिखना" नहीं है। यह एक दर्शन है जहाँ फंक्शन मुख्य पात्र हैं। उनके कोई साइड इफेक्ट नहीं होते, वे वैश्विक अवस्था नहीं बदलते और हमेशा पूर्वानुमानित परिणाम लौटाते हैं।
\n\nउदाहरण: वही कार्य, लेकिन फंक्शनल तरीके से
\nआइए वही कार्य हल करें — उपयोगकर्ता बनाना और ईमेल भेजना — लेकिन बिना क्लासेस के।
\n<?php\nfunction createUser(string $name, string $email): array {\n return ['name' => $name, 'email' => $email];\n}\n\nfunction sendWelcomeEmail(array $user): void {\n $subject = "स्वागत है, {$user['name']}!";\n $message = "नमस्ते, {$user['name']}. आपको हमारी साइट पर देखकर खुशी हुई।";\n mail($user['email'], $subject, $message);\n}\n\nfunction getUserName(array $user): string {\n return $user['name'];\n}\n\n$user = createUser("इवान", "ivan@example.com");\nsendWelcomeEmail($user);\necho "ईमेल उपयोगकर्ता को भेजा गया: " . getUserName($user);\n?>\nक्या यह सरल दिखता है? हाँ। लेकिन यहाँ कोई एनकैप्सुलेशन नहीं है — डेटा सिर्फ एक ऐरे है। हालाँकि, प्रत्येक फंक्शन केवल एक कार्य करता है और "बाहरी दुनिया" के बारे में कुछ नहीं जानता।
\n\n