নির্ভরতা ইনজেকশন সিস্টেমের সাথে ম্যাজেন্টো 2 তে ম্যাজেন্টো 1 শ্রেণির পুনর্লিখন


10

ম্যাজেন্টো 2 এর মূল কোডটিকে ঘিরে ধরে মনে হচ্ছে, পুরানো শ্রেণির পুনর্লিখনের সিস্টেমটি ছিঁড়ে ফেলা হয়েছে এবং একটি নতুন নির্ভরতা ইনজেকশন সিস্টেমটি প্রতিস্থাপন করেছে।

দুর্ভাগ্যক্রমে, এই নতুন সিস্টেমের জন্য কোনও ডকুমেন্টেশন নেই

কারও কি এমন একটি মডিউল কনফিগারেশন নমুনা রয়েছে যা কোনও ব্যবহারকারীকে নতুন নির্ভরতা ইনজেকশন সিস্টেমটি ব্যবহার করে নতুন ক্লাসের Mage_Catalog_Model_Productসাথে ক্লাসটিকে "পুনরায় লিখন" করতে দেয় Packagename_Modulename_Model_Product?


আমি ভেবেছিলাম ম্যাগান্তো
মারিয়াস

উত্তর:


10

Di কনফিগারেশনটি di.xML ফাইলগুলিতে সরানো হয়েছিল এবং ফর্ম্যাটটি সংশোধন করা হয়েছিল। এখন পছন্দগুলি দেখতে (di.xML):

<config>
    <preference for="{Interface_Or_Class_Name}" type="{Preferred_Class_Name}" />
</config>

যদি এটি একটি শ্রেণীর পুনর্লিখন হয় তবে এটি পছন্দ নোডের পরিবর্তে প্লাগইন ব্যবহার করা ভাল?
হুজেফাম

2
আপনার যদি কিছু মূল শ্রেণীর আচরণের বিকল্প প্রয়োজন হয় তবে আপনার পছন্দটি ব্যবহার করা উচিত। আপনার যদি কিছু মূল পদ্ধতির আচরণের বিকল্প দরকার হয় তবে আপনার আশেপাশের শ্রোতাদের সাথে প্লাগইন ব্যবহার করা উচিত যা $ এগিয়ে চলুন () না বলে। আপনার যদি কোনও মূল পদ্ধতি বা শ্রেণিতে আচরণ যুক্ত করতে হয় তবে আপনার প্লাগইন ব্যবহার করা উচিত।
আন্তন ক্রিল

5

ভিতরে থেকে কাজ করে, আমি নিম্নলিখিতটির সাথে কাজ করে একটি পুনর্লিখন পেতে সক্ষম হয়েছি

<global>    
    <di>    
        <preferences>
            <Mage_Catalog_Model_Product>Packagename_Modulename_Model_Product</Mage_Catalog_Model_Product>
        </preferences> 
    </di>
</global>

যাইহোক, নির্ভরতা ইনজেকশন প্রয়োগের ক্ষেত্রে আরও অনেকগুলি সিস্টেম কোড রয়েছে, সুতরাং উপরের ম্যাজেন্টো 2 এর চূড়ান্ত প্রকাশিত সংস্করণে কাজ করবে কিনা তা পরিষ্কার নয়।


সুতরাং দেখে মনে হচ্ছে তারা মূলত পছন্দসইতে "ওরফে" নাম পরিবর্তন করে শীর্ষে সরিয়ে নিয়েছে? মজাদার. আমি ডকুমেন্টেশন রোল আউট আপডেটগুলি দেখার অপেক্ষায় আছি। পিটার বলেছিলেন যে তাদের কাছে এটি রয়েছে, তবে এগুলি সমস্তই কমপক্ষে আইআইআরসি-তে ডক্স সাইটে আউট করা হয়নি।
ডেভিডালগার

5

আপনি সঠিক, শ্রেণীর পুনর্লিখনগুলি সম্পূর্ণরূপে মুছে ফেলা হয়েছিল এবং ডিআই দিয়ে প্রতিস্থাপন করা হয়েছিল। নিম্নলিখিত নোটগুলি অ্যাপ্লিকেশন ফ্রেমওয়ার্ক পরিবর্তনগুলির বিভাগ থেকে রয়েছে :

ম্যাজেন্টো 1.x - নোড: / গ্লোবাল // {উপ-পথ যা কারখানার নাম + "পুনর্লিখন" আক্ষরিক correspond

<global>
...
    <models>
        <core>
            <rewrite>
                <url>My_Module_Model_Url</url>
            </rewrite>
        </core>
    </models>
...
</global>

ম্যাজেন্টো ২.x - নোড: / গ্লোবাল / ডিআই / এলিয়াস

<global>
...
    <di>
        <aliases>
            <Mage_Core_Model_Url>My_Module_Model_Url</Mage_Core_Model_Url>
        </aliases>
    </di>
...
</global>

আমি এটিকে ম্যাজেন্টো ২.০-তে চালিত মডিউলে ব্যবহার করার চেষ্টা করিনি, তবে মনে হচ্ছে আপনি মূলত প্রতি-মডিউল পুনরায় লেখার জন্য এক্সএমএল-এর জটিল শ্রেণিবিন্যাসের পরিবর্তে ক্লাস নামের জন্য একটি এলিফ নির্ধারণ করেছেন।


1
অ্যাপ্লিকেশন ফ্রেমওয়ার্ক পৃষ্ঠার জন্য +1, তবে এটি যে সাম্প্রতিক ম্যাজেন্টো 2 স্ন্যাপশটটি ধরেছিলাম তাতে কাজ করে না।
অ্যালান ঝড়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.