ম্যাজেন্টো 2: ar ডেটা অ্যারে কনস্ট্রাক্টর প্যারামিটারটি কী?


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 এর অনেকগুলি ক্লাস থেকে প্রসারিত।

একটি সাধারণ ব্যবহার কারখানার সাথে মিলিত হয়। উদাহরণস্বরূপ Magento\Sales\Model\Order\CustomerManagement:

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

যা মূলত $dataসৃষ্টিতে অ্যারেকে জনপ্রিয় করে তোলে।

$data = []পরামিতিগুলির তালিকার শেষে রাখা স্বাভাবিক পিএইচপি আচরণ কারণ যেহেতু আপনি একটি ডিফল্ট মান নির্ধারণ করছেন - খালি অ্যারে।


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>

আপনি উপরের ডি- মেকানিজমটি ব্যবহার করে কোনও অ্যারেতে অবজেক্ট এবং অন্যান্য ফর্ম্যাটগুলিও পাস করতে পারেন । কার্যকারিতা বাড়ানোর সময় আপনি সেই যুক্তিগুলি ব্যবহার করতে পারেন। আমরা বলতে পারি, এটি va_listসি তে এক ধরণের ।

আপনি যখন কোনও কনস্ট্রাক্টারে আর্গুমেন্টের সংখ্যাটি সংশোধন করতে না চান এবং আপনার বর্ধিত কার্যকারিতাতে অন্যান্য ক্লাসে ইনজেক্ট করতে চান না তখন এটি ব্যবহার করা যেতে পারে।


এবং কীভাবে আমরা সেই ডেটা অ্যারে থেকে ডেটা পেতে পারি? আপনি কি বিদ্যমান উদাহরণ বা অন্য কিছু ভাগ করতে পারেন।
কিংশুক দেব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.