PHP में कार्यात्मक प्रोग्रामिंग: A से Z तक — पूर्ण गाइड

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

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

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

PHP में कार्यात्मक प्रोग्रामिंग का परिचय

\n\n

कार्यात्मक प्रोग्रामिंग (FP) एक प्रतिमान है जिसमें गणनाओं को गणितीय फ़ंक्शनों की गणना के रूप में देखा जाता है, जिसमें स्थिति में परिवर्तन और परिवर्तनीय डेटा से बचा जाता है। हालाँकि PHP मूल रूप से एक अनिवार्य भाषा के रूप में बनाई गई थी, संस्करण 5.3 (2009) से इसमें कार्यात्मक शैली के लिए शक्तिशाली उपकरण जोड़े गए: अनाम फ़ंक्शन, क्लोज़र, उच्च-क्रम फ़ंक्शनों का समर्थन और भी बहुत कुछ।

\n\n

इस लेख में, हम PHP में कार्यात्मक प्रोग्रामिंग की सभी प्रमुख अवधारणाओं को समझेंगे - बुनियादी अनाम फ़ंक्शन से लेकर करीइंग और फ़ंक्शन संरचना जैसी उन्नत तकनीकों तक। आप सीखेंगे कि कैसे अधिक स्वच्छ, पूर्वानुमानित और परीक्षण योग्य कोड लिखें।

\n\n

1. अनाम फ़ंक्शन और क्लोज़र

\n\n

अनाम फ़ंक्शन

\n\n

अनाम फ़ंक्शन (लैम्ब्डा) एक ऐसा फ़ंक्शन है जिसका कोई नाम नहीं होता। इसे एक वेरिएबल को सौंपा जा सकता है, एक आर्गुमेंट के रूप में पास किया जा सकता है, या किसी अन्य फ़ंक्शन से वापस किया जा सकता है।

\n\n
<?php\n// सामान्य अनाम फ़ंक्शन\n$square = function($n) {\n    return $n * $n;\n};\n\necho $square(5); // 25\n\n// array_map के लिए कॉलबैक के रूप में अनाम फ़ंक्शन\n$numbers = [1, 2, 3, 4];\n$squared = array_map(function($n) {\n    return $n * $n;\n}, $numbers);\n\nprint_r($squared); // [1, 4, 9, 16]\n?>
\n\n

क्लोज़र

\n\n

क्लोज़र एक अनाम फ़ंक्शन है जो use कीवर्ड की मदद से बाहरी स्कोप से वेरिएबल्स को कैप्चर कर सकता है। यह PHP में FP की सबसे शक्तिशाली विशेषताओं में से एक है।

\n\n
<?php\n$multiplier = 3;\n\n$multiply = function($n) use ($multiplier) {\n    return $n * $multiplier;\n};\n\necho $multiply(10); // 30\n\n// परिवर्तनीय वेरिएबल (रेफरेंस द्वारा पास किया गया)\n$counter = 0;\n$increment = function() use (&$counter) {\n    $counter++;\n};\n\n$increment();\n$increment();\necho $counter; // 2\n?>
\n\n

2. शुद्ध फ़ंक्शन और डेटा अपरिवर्तनीयता

\n\n

शुद्ध फ़ंक्शन

\n\n

शुद्ध फ़ंक्शन वह फ़ंक्शन है जो:

\n
    \n
  • समान आर्गुमेंट के लिए हमेशा समान परिणाम लौटाता है (नियतात्मक)
  • \n
  • इसका कोई दुष्प्रभाव नहीं होता (बाहरी वेरिएबल्स को नहीं बदलता, डेटा आउटपुट नहीं करता, DB के साथ काम नहीं करता)
  • \n
\n\n
<?php\n// शुद्ध फ़ंक्शन नहीं (ग्लोबल वेरिएबल पर निर्भर)\n$taxRate = 0.2;\nfunction calculatePriceDirty($price) {\n    global $taxRate;\n    return $price * (1 + $taxRate);\n}\n\n// शुद्ध फ़ंक्शन\nfunction calculatePricePure($price, $taxRate) {\n    return $price * (1 + $taxRate);\n}\n\necho calculatePricePure(100, 0.2); // 120 — हमेशा पूर्वानुमानित\n?>
\n\n

अपरिवर्तनीयता

\n\n

FP में मौजूदा डेटा को बदलने के बजाय नया डेटा बनाने की प्रथा है। PHP में इसके लिए अपरिवर्तनीय ऑब्जेक्ट का उपयोग किया जा सकता है या बस नए ऐरे लौटाए जा सकते हैं।

\n\n
<?php\n// बुरा: मूल ऐरे को बदलना\n$numbers = [1, 2, 3];\narray_push($numbers, 4); // म्यूटेशन\n\n// अच्छा: नया ऐरे बनाना\n$numbers = [1, 2, 3];\n$newNumbers = array_merge($numbers, [4]);\n\n// फ़ंक्शन जो नया ऐरे लौटाता है\nfunction addItem(array $arr, $item): array {\n    $result = $arr;\n    $result[] = $item;\n    return $result;\n}\n\n$original = [1, 2];\n$updated = addItem($original, 3);\nprint_r($original); // [1, 2] — मूल नहीं बदला\nprint_r($updated);  // [1, 2, 3]\n?>
\n\n

3. उच्च-क्रम फ़ंक्शन: array_map, array_filter, array_reduce

\n\n

उच्च-क्रम फ़ंक्शन वे फ़ंक्शन हैं जो अन्य फ़ंक्शन को आर्गुमेंट के रूप में लेते हैं या उन्हें लौटाते हैं। PHP में कार्यात्मक शैली में ऐरे के साथ काम करने के लिए तीन प्रमुख फ़ंक्शन बिल्ट-इन हैं।

\n\n

array_map — तत्वों का रूपांतरण

\n\n
<?php\n$users = [\n    ['name' => 'Alice', 'age' => 25],\n    ['name' => 'Bob', 'age' => 30],\n];\n\n// केवल नाम निकालना\n$names = array_map(function($user) {\n    return $user['name'];\n}, $users);\n\nprint_r(                

ब्लॉग

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