Magento 2: $ डेटा सरणी निर्माता पैरामीटर क्या है?


21

इसलिए मैंने देखा कि अधिकांश मॉडल और ब्लॉकों में, यह array $data = []कंस्ट्रक्टर के अंतिम पैरामीटर के रूप में दिया गया है

उदाहरण के लिए \Magento\Catalog\Block\Product\ListProduct

public function __construct(
    \Magento\Catalog\Block\Product\Context $context,
    \Magento\Framework\Data\Helper\PostHelper $postDataHelper,
    \Magento\Catalog\Model\Layer\Resolver $layerResolver,
    CategoryRepositoryInterface $categoryRepository,
    \Magento\Framework\Url\Helper\Data $urlHelper,
    array $data = []
) {
    $this->_catalogLayer = $layerResolver->get();
    $this->_postDataHelper = $postDataHelper;
    $this->categoryRepository = $categoryRepository;
    $this->urlHelper = $urlHelper;
    parent::__construct(
        $context,
        $data
    );
}

मुझे यह भी पता है कि, वरीयताओं के साथ काम करते समय, आपको मूल निर्माता की तुलना में अधिक पैरामीटर जोड़ने पर आपको अभी भी अपने पैरामीटर पैरामीटर सूची के अंत में उस पैरामीटर को रखना होगा

इसलिए मुझे इस सरणी के बारे में कई प्रश्न मिले हैं :

  • यह क्या है ?
  • इसका इस्तेमाल कैसे करें ?
  • जब हम अधिक मापदंडों को जोड़ने वाले ब्लॉक के लिए वरीयताएँ घोषित करते हैं, तो हमें इसे निर्माण मापदंडों की सूची के अंत में रखने की आवश्यकता क्यों है?

जवाबों:


13

$dataनिर्माता के बाद से अपने वस्तु पर पॉप्युलेट डेटा के लिए इस्तेमाल किया जा सकता है की \Magento\Framework\DataObjectयह है

public function __construct(array $data = [])
{
    $this->_data = $data;
}

या इसी तरह के लिए Magento\Framework\Api\AbstractSimpleObject

/**
 * Initialize internal storage
 *
 * @param array $data
 */
public function __construct(array $data = [])
{
    $this->_data = $data;
}

मैगेंटो में बहुत सारी कक्षाएं किससे विस्तारित होती हैं।

एक आम उपयोग एक कारखाने के साथ संयोजन में है। उदाहरण के लिए Magento\Sales\Model\Order\CustomerManagementहमारे पास:

$this->addressFactory->create(['data' => $addressData]);

जो $dataसृजन में सरणी को अनिवार्य रूप से आबाद करता है ।

$data = []मापदंडों की सूची के अंत में रखने के लिए सामान्य php व्यवहार है क्योंकि आप एक डिफ़ॉल्ट मान असाइन कर रहे हैं - खाली सरणी।


16

$data[]से पारित कर दिया पकड़ मूल्यों के लिए इस्तेमाल किया जा सकता di.xmlहै तर्क प्रतिस्थापन तंत्र, जब \Magento\Catalog\Block\Product\ListProductintantiated।

आपके मामले में यह द्वारा आबादी जा सकती है

<type name="\Magento\Catalog\Block\Product\ListProduct">
         <arguments>
             <argument name="data" xsi:type="array">
                 <item name="0" xsi:type="string">anystring</item>
                 <item name="1" xsi:type="string">xyz</item>
                <item name="2" xsi:type="string">abs</item>
            </argument>
         </arguments>
     </type>

तुम भी di तंत्र के ऊपर एक सरणी के लिए वस्तु और अन्य स्वरूपों को पारित कर सकते हैं । आगे आप कार्यक्षमता का विस्तार करते हुए उन तर्कों का उपयोग कर सकते हैं। हम कह सकते हैं, यह एक तरह का va_listc है।

इसका उपयोग तब किया जा सकता है जब आप किसी रचनाकार में तर्कों की संख्या को संशोधित नहीं करना चाहते हैं और अपनी विस्तारित कार्यक्षमता में अन्य वर्गों को इंजेक्ट करना चाहते हैं।


और हम उस $ डेटा सरणी से डेटा कैसे प्राप्त करते हैं? क्या आप एक मौजूदा उदाहरण या कुछ भी साझा कर सकते हैं।
किंगशुक देब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.