questions - php tutorial pdf




PHP में तीन डॉट(…) का मतलब (5)

PHP में थ्री डॉट (...) का क्या अर्थ है?

जब मैं अपने सेवार में Magento 2 स्थापित कर रहा हूं तो मुझे एक त्रुटि मिली। कोड की जांच करें और पाया कि एक तीन डॉट (...) है, जो त्रुटि पैदा कर रहा है। मैंने नीचे दिए गए कोड का उल्लेख किया है

return new $type(...array_values($args));

इस सुविधा का उपयोग करने के लिए, बस PHP को चेतावनी दें कि इसे ... operator का उपयोग करके सरणी को चर में खोलना होगा। अधिक जानकारी के लिए here देखें, एक सरल उदाहरण इस तरह दिख सकता है:

$email[] = "Hi there";
$email[] = "Thanks for registering, hope you like it";

mail("[email protected]", ...$email);

ऐसा लगता है कि किसी ने भी इसका उल्लेख नहीं किया है, इसलिए यहां रहने के लिए [यह Google (और अन्य एसईएस) गाइड देवों की भी मदद करेगा जो पीएचपी में रेस्ट पैरामीटर के लिए पूछ रहे हैं]:

जैसा कि यहां बताया गया है कि जेएस पर रेस्ट पैरामीटर्स कहा जाता है और मैं उस स्पैट चीज़ पर इस सार्थक नामकरण को पसंद करता हूं!

PHP में, ... args द्वारा प्रदान की गई http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list को http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list कहा जाता http://php.net/manual/en/functions.arguments.php#functions.variable-arg-list जो PHP5.6 पर प्रस्तुत किया गया है। समान कार्यक्षमता का उपयोग func_get_args() का उपयोग करके लागू किया गया था।

इसे ठीक से उपयोग करने के लिए, आपको बाकी मापदंडों के सिंटैक्स का उपयोग करना चाहिए, कहीं भी यह बॉयलरप्लेट कोड को कम करने में मदद करता है।


मैं इस ऑपरेटर के उपयोग को Magento के ढांचे में साझा करना चाहता हूं, जहां यह गतिशील विन्यास योग्य मापदंडों (सोचा XML कॉन्फ़िगरेशन फ़ाइलों) के साथ वस्तुओं को झटपट करता है।

जैसा कि हम निम्नलिखित कोड स्निपेट से createObject फ़ंक्शन को देख सकते हैं, यह ऑब्जेक्ट निर्माण के लिए तैयार तर्कों की एक सरणी में लेता है। तब यह ... (तीन डॉट्स) ऑपरेटर का उपयोग करता है, क्लास के कंस्ट्रक्टर के लिए वास्तविक तर्कों के रूप में सरणी मानों को पास करने के लिए।

<?php

namespace Magento\Framework\ObjectManager\Factory;

abstract class AbstractFactory implements \Magento\Framework\ObjectManager\FactoryInterface
{
    ...

    /**
     * Create object
     *
     * @param string $type
     * @param array $args
     *
     * @return object
     * @throws RuntimeException
     */
    protected function createObject($type, $args)
    {
        try {
            return new $type(...array_values($args));
        } catch (\TypeError $exception) {
            ...
        }
    }

    ...

}

यह तथाकथित "स्प्लैट" ऑपरेटर है। मूल रूप से वह चीज़ "तर्कों की किसी भी संख्या" में अनुवाद करती है; PHP 5.6 के साथ पेश किया गया

अधिक जानकारी के लिए यहां देखें।


...$str को PHP में एक splat ऑपरेटर कहा जाता है।

यह सुविधा आपको किसी फ़ंक्शन के चर संख्या को "सामान्य" तर्कों के साथ संयोजित करने की अनुमति देती है, यदि आप पसंद करते हैं। एक उदाहरण के साथ देखना सबसे आसान है:

function concatenate($transform, ...$strings) {
    $string = '';
    foreach($strings as $piece) {
        $string .= $piece;
    }
    return($transform($string));
}

echo concatenate("strtoupper", "I'd ", "like ", 4 + 2, " apples");
// This would print:
// I'D LIKE 6 APPLES

फ़ंक्शन घोषणा में पैरामीटर सूची में ... ऑपरेटर है, और इसका मूल रूप से मतलब है "... और बाकी सब $ स्ट्रिंग में जाना चाहिए"। आप इस फ़ंक्शन में 2 या अधिक तर्क पास कर सकते हैं और दूसरे और बाद वाले का उपयोग करने के लिए तैयार $ स्ट्रिंग्स सरणी में जोड़ा जाएगा।

उम्मीद है की यह मदद करेगा!






php