PHP में फंक्शनल या OOP: 2024 में क्या चुनें?

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

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

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

एक भाषा में दो दुनियाएँ: यह क्यों महत्वपूर्ण है?

\n

जब हम PHP के बारे में बात करते हैं, तो तुरंत क्लासिकल ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण (OOP) दिमाग में आता है। क्लासेस, इनहेरिटेंस, एनकैप्सुलेशन — यह वह आधार है जो सभी कोर्सेज में सिखाया जाता है। लेकिन सिक्के का दूसरा पहलू भी है — फंक्शनल दृष्टिकोण। और क्या आप जानते हैं? PHP दोनों कर सकता है, और बहुत अच्छी तरह से।

\n

इस लेख में हम यह बहस नहीं करेंगे कि क्या बेहतर है। हम समझेंगे कि कब और कौन सा दृष्टिकोण उपयोग करना चाहिए, ताकि आपका कोड न केवल सुंदर हो बल्कि तेज़ भी हो। यदि आप PHP में लिखते हैं और "बस काम करता है" से आगे जाना चाहते हैं — तो यह आपके लिए है।

\n\n

ऑब्जेक्ट-ओरिएंटेड PHP: क्लासिक जो कभी पुराना नहीं होता

\n

PHP में 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\n

PHP में OOP के लाभ

\n
    \n
  • पठनीयता: कोड तार्किक ब्लॉकों में विभाजित है, आवश्यक विधि आसानी से मिल जाती है।
  • \n
  • इनहेरिटेंस: एक बेस क्लास बनाकर उसका विस्तार किया जा सकता है।
  • \n
  • एनकैप्सुलेशन: डेटा आकस्मिक परिवर्तन से सुरक्षित रहता है (private/protected)।
  • \n
  • पॉलीमॉर्फिज्म: एक इंटरफ़ेस — अलग-अलग कार्यान्वयन।
  • \n
\n\n

OOP के नुकसान

\n
    \n
  • अतिरेकता: एक सरल कार्य (जैसे, स्ट्रिंग को फ़ॉर्मेट करना) के लिए क्लास लिखना ओवरकिल है।
  • \n
  • अवस्था: ऑब्जेक्ट अवस्था संग्रहीत करते हैं, जो म्यूटेशन पर ध्यान न देने पर बग का कारण बन सकता है।
  • \n
  • मेमोरी: प्रत्येक ऑब्जेक्ट एक साधारण फंक्शन से अधिक मेमोरी लेता है।
  • \n
\n\n

फंक्शनल PHP: न्यूनतमवाद और शुद्धता

\n

PHP में फंक्शनल प्रोग्रामिंग केवल "फंक्शन लिखना" नहीं है। यह एक दर्शन है जहाँ फंक्शन मुख्य पात्र हैं। उनके कोई साइड इफेक्ट नहीं होते, वे वैश्विक अवस्था नहीं बदलते और हमेशा पूर्वानुमानित परिणाम लौटाते हैं।

\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

उन्नत फंक्शनल

ब्लॉग

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