ম্যাজেন্টো 2 এ কী ক্লাসগুলি "ইন্টারসেপ্ট-সক্ষম / প্লাগিন সক্ষম" রয়েছে


17

তারিখ: 30 মে, 2015 (ম্যাজেন্টো 2 এর পরিবর্তিত প্রকৃতি দেওয়া হয়েছে)।

ম্যাজেন্টো 2 একটি ইন্টারসেপ্টর প্যাটার্নের মাধ্যমে প্রয়োগ করা একটি প্লাগইন ধারণা চালু করেছে

দস্তাবেজগুলি থেকে কী পরিষ্কার নয় তা হল - ম্যাজেন্টোতে কোন ক্লাস এবং অবজেক্টগুলি "ইন্টারসেপ্ট-সক্ষম"? এটি, আপনি এক্সএমএল সহ একটি প্লাগইন কনফিগার করেছেন যা নীচের মত দেখাচ্ছে like

<config>
    <type name="{ObservedType}">
        <plugin name="{pluginName}" type="{PluginClassName}" sortOrder="1" disabled="true"/>
    </type>
</config>

তবে কোন ক্লাসটি একটি হিসাবে বৈধ তা পরিষ্কার নয় ObservedType। এই পুরানো উইকির নিবন্ধটি যখন বলেছে তখন কিছু ক্লু সরবরাহ করে

দয়া করে নোট করুন যে প্লাগইন বৈশিষ্ট্যটি প্রযোজ্য নয় - নির্ভরতা ইনজেকশন ছাড়াই তৈরি করা ক্লাসগুলি, যা অপারেটর দিয়ে সরাসরি নতুন তৈরি করা হয়েছে, - ফাইনাল পদ্ধতিগুলি, - ফাইনাল ক্লাসগুলি

নির্ভরতা ইনজেকশনের মাধ্যমে তৈরি কোনও বস্তু কি বাধা দেওয়া যায়? ObservedTypeকোনও __constructপদ্ধতিতে প্রদত্ত প্রকারের ইঙ্গিত হওয়ার দরকার কী , বা এটি (এটি হওয়া উচিত?) অন্য কিছু হতে পারে?

মূলত আমি তাদের ব্যবহার শুরু করার আগে ম্যাজেন্টো 2 ইন্টারসেপ্টর দিয়ে কী করা যায় এবং কী করা যায় না তার চারপাশে আমার মাথা পেতে চেষ্টা করছি।

উত্তর:


10

একটি ম্যাজেন্টো মডিউলটির প্রতিটি শ্রেণি আন্তঃক্রিয়াযোগ্য।

বর্তমান উইকিতে বর্ণিত হিসাবে এটি চূড়ান্ত পদ্ধতি এবং ক্লাস দ্বারা সীমাবদ্ধ

বৈধ নয়, তবে পাঠাগারগুলির ক্লাস (lib ডিরেক্টরি) হ'ল (/ হওয়া উচিত) বাধা পাওয়ার অনুমতি নেই।

বস্তুটি কীভাবে তৈরি হয়েছিল তার সীমাবদ্ধতাটি আর সত্য নয় বলে আমি মনে করি, কমপক্ষে যদি অটোলোডার সঠিকভাবে কনফিগার করা থাকে। এবং তারা ফ্লাইতে তৈরি না হওয়ার বিষয়টি বিবেচ্য নয়, তবে যখন জেনারেটর কার্যকর হয়। (সুতরাং এটি কেবলমাত্র বিষয়, ম্যাজেন্টো অটোলোডারটি প্রথম হওয়া উচিত)


2
লিব ক্লাস বাধা দেওয়ার জন্য আমাদের সীমাবদ্ধতা নেই। এছাড়াও অবজেক্টটি ইন্টারসেপটেবল হওয়ার জন্য এটি অবজেক্টম্যানেজার (কনস্ট্রাক্টর ইঞ্জেকশন) দিয়ে তৈরি করতে হবে।
আন্তন ক্রিল

1
এটি লক্ষ করা উচিত যে যাদু পদ্ধতিগুলি (তবে phpdoc ব্যবহার করে ঘোষিত) বাধা দেওয়া যায় না। আমি মনে করি. ভারিয়েন_জেক্ট স্টাইল এখনও কিছু জায়গায় রয়েছে।
nevvermind

11

আমরা প্রস্তাবিত পদ্ধতিগুলি টীকাতে "@api" টিকাতে কাজ করছি যা রিলিজ জুড়ে আরও স্থিতিশীল হবে। আপনি যদি আপগ্রেডিবিলিটি সম্পর্কে চিন্তা করেন তবে অতিরিক্ত কী পারে তা প্লাগইন কী সংজ্ঞায়িত প্লাগইন কী সংজ্ঞায়িত করা উচিত তাও বিবেচনা করা উচিত । আমরা অ-@ এপিআই পদ্ধতিগুলি বাধা দেওয়ার প্রস্তাব দিই না, তবে কখনও কখনও আমরা জানি যে এটি সর্বোত্তম বিকল্প হতে পারে। (আমরা এটি বিকাশকারীদের বিবেচনার উপর ছেড়ে দিই))

আনুষ্ঠানিকভাবে, আপনি চূড়ান্ত নয় এমন পাবলিক পদ্ধতিগুলি বাধা দিতে পারেন। ব্যক্তিগত পদ্ধতিগুলি অবশ্যই কাজ করবে না। স্মৃতি থেকে, বাধা বর্তমানে একটি বংশধর শ্রেণি তৈরি করে কাজ করে যা প্রকৃত শ্রেণীর উত্তরাধিকার সূত্রে আসে (নির্ভরশীলতা ইনজেকশন কাঠামো উত্পন্ন শ্রেণীর উদাহরণ তৈরি করে যখন আপনি প্রকৃত শ্রেণির কোনও নতুন উদাহরণ চাইবেন)। সুতরাং যে কোনও কিছু উপ-শ্রেণীর তৈরি করার অনুমতি দেয় এবং মূল পদ্ধতিটি ওভাররাইড করা সম্ভবত কাজ করবে তবে পাবলিক পদ্ধতিগুলি সুপারিশ করা হয়েছে, ভবিষ্যতে আরও কিছু চতুর বাস্তবায়ন ব্যবহার করার ক্ষেত্রে আমাদের নমনীয়তা দেয় (যা কখনই কোনও কারণ ছাড়াই বাস্তবসম্মত হবে না) ।


5

আমি জানি এর একটি উত্তর ইতিমধ্যে রয়েছে তবে এটি 2 বছর আগের from এরই মধ্যে কিছু জিনিস বদলে গেছে।

আমি এখন পর্যন্ত যা খুঁজে পেয়েছি তা এখানে।
থেকে সরকারী ডকুমেন্টেশন এবং বাধাগুলি প্রক্রিয়ার মধ্যে খনন থেকে।

অন্যদিকে আমি উত্তর দেব।
কি করতে পারে না Magento 2. বাধা দিতে
সরকারি ডক থেকে

  • ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ ইন্টারসেপশন বুটস্ট্র্যাপ করার আগে অবজেক্টগুলি অবজেক্ট করা হয় (নিশ্চিত না যে পয়েন্টটি কোথায়)
  • চূড়ান্ত পদ্ধতি
  • চূড়ান্ত শ্রেণি থেকে যে কোনও পদ্ধতি (কারণ উত্পন্ন ইন্টারসেপ্টর শ্রেণীর মূল শ্রেণিটি প্রসারিত করতে হবে)
  • কমপক্ষে একটি চূড়ান্ত সর্বজনীন পদ্ধতি থাকা যে কোনও শ্রেণিতে
  • জন-সরকারী পদ্ধতি (এটি সুরক্ষিত পদ্ধতির জন্য কাজ করতে পারে তবে এটি "নৈতিক" নয়, কারণ এটি শ্রেণিবদ্ধের বাইরে প্রকাশ্যে অ-পাবলিক পদ্ধতি প্রকাশ করবে)
  • স্থির পদ্ধতি
  • __construct
  • ভার্চুয়াল প্রকার

কাছাকাছি খনন থেকে

  • ক্লাসে পদ্ধতিগুলি যা অবজেক্ট ম্যানেজারের মাধ্যমে ইনস্ট্যান্ট হয় না। (উদাহরণ \Magento\Framework\Phrase)
  • ক্লাস বাস্তবায়ন \Magento\Framework\ObjectManager\NoninterceptableInterface। (উদাহরণস্বরূপ \Magento\Framework\App\Cache\Proxyএবং অন্যান্য সমস্ত স্বয়ংক্রিয় উত্পাদিত প্রক্সি)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.