PHP में कार्यात्मक प्रोग्रामिंग: उन्नत स्तर

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

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

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

PHP में कार्यात्मक प्रोग्रामिंग: उन्नत स्तर

\n\n

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

\n\n

1. उच्च-क्रम फलन और क्लोज़र

\n\n

उच्च-क्रम फलन वे फलन हैं जो अन्य फलनों को तर्क के रूप में लेते हैं या उन्हें लौटाते हैं। PHP में, यह अनाम फलनों (क्लोज़र) और अंतर्निहित फलनों array_map, array_filter, array_reduce के माध्यम से कार्यान्वित किया जाता है।

\n\n

उदाहरण: फ़िल्टरिंग के लिए कॉलबैक फलन

\n\n
<?php\n$numbers = [1, 2, 3, 4, 5, 6];\n\n// उच्च-क्रम फलन\n$filterEven = function(array $items, callable $callback): array {\n    $result = [];\n    foreach ($items as $item) {\n        if ($callback($item)) {\n            $result[] = $item;\n        }\n    }\n    return $result;\n};\n\n// अनाम विधेय फलन\n$isEven = fn($n) => $n % 2 === 0;\n\n$evenNumbers = $filterEven($numbers, $isEven);\n// परिणाम: [2, 4, 6]\nprint_r($evenNumbers);\n?>\n
\n\n

उदाहरण: फलन फैक्ट्री (स्थिति के साथ क्लोज़र)

\n\n
<?php\nfunction createMultiplier(float $factor): callable {\n    // क्लोज़र $factor को "याद" रखता है\n    return fn($number) => $number * $factor;\n}\n\n$double = createMultiplier(2);\n$triple = createMultiplier(3);\n\necho $double(5); // 10\necho $triple(5); // 15\n?>\n
\n\n

PHP में क्लोज़र use के माध्यम से बाहरी दायरे से चरों को कैप्चर करने की अनुमति देते हैं (PHP 7.4+ में एरो फलन fn का उपयोग किया जा सकता है)। यह करीइंग और आंशिक अनुप्रयोग के निर्माण का आधार है।

\n\n

2. करीइंग और आंशिक अनुप्रयोग

\n\n

करीइंग एक फलन को कई तर्कों से एक तर्क वाले फलनों के अनुक्रम में बदलना है। आंशिक अनुप्रयोग फलन के कुछ तर्कों को स्थिर करना है। PHP में कोई अंतर्निहित समर्थन नहीं है, लेकिन इसे आसानी से कार्यान्वित किया जा सकता है।

\n\n

उदाहरण: मैन्युअल करीइंग

\n\n
<?php\n// सामान्य फलन\nfunction add(int $a, int $b): int {\n    return $a + $b;\n}\n\n// करीड संस्करण\n$curriedAdd = function(int $a): callable {\n    return function(int $b) use ($a): int {\n        return $a + $b;\n    };\n};\n\n$addFive = $curriedAdd(5);\necho $addFive(3); // 8\n?>\n
\n\n

उदाहरण: सार्वभौमिक करीइंग फलन

\n\n
<?php\nfunction curry(callable $fn, int $arity = null): callable {\n    $reflection = new ReflectionFunction($fn);\n    $arity = $arity ?? $reflection->getNumberOfRequiredParameters();\n\n    $curry = function(...$args) use ($fn, $arity, &$curry) {\n        if (count($args) >= $arity) {\n            return $fn(...$args);\n        }\n        return function(...$nextArgs) use ($fn, $args, $arity, $curry) {\n            return $curry(...array_merge($args, $nextArgs));\n        };\n    };\n\n    return $curry;\n}\n\n$add = function(int $a, int $b, int $c): int {\n    return $a + $b + $c;\n};\n\n$curriedAdd = curry($add);\n$result = $curriedAdd(1)(2)(3); // 6\necho $result;\n?>\n
\n\n

करीइंग विशेष रूप से फलन संयोजन और सामान्य फलनों के विशिष्ट संस्करण बनाने में उपयोगी है।

\n\n

3. फलन संयोजन और कार्यात्मक पैटर्न

\n\n

फलन संयोजन कई फलनों को क्रमिक रूप से लागू करके एक नया फलन बनाना है। एक फलन का परिणाम अगले फलन के इनपुट के रूप में दिया जाता है।

\n\n

उदाहरण: "बाएँ से दाएँ" संयोजन (pipe)

ब्लॉग

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