ইন্টারসেপ্টর ক্লাসগুলি ইন্টারসেপ্টর ডিজাইন প্যাটার্নের একটি বাস্তবায়ন । ইন্টারসেপ্টরগুলি হ'ল কীভাবে ম্যাজেন্টো 2 এর অবজেক্ট সিস্টেম একটি প্লাগইন সিস্টেম প্রয়োগ করে ।
ক্লায়েন্ট বিকাশকারী হিসাবে, থিয়োরিটি হ'ল আপনাকে ইন্টারসেপ্টরগুলি নিয়ে চিন্তা করার দরকার নেই - আপনি বস্তুর পরিচালককে এক্স টাইপের কোনও বস্তুর জন্য জিজ্ঞাসা করেন এবং এটি আপনাকে ফিরিয়ে দেয়। আপনি যে বস্তুর জন্য জিজ্ঞাসা করেছেন সেটি কোনও ইন্টারসেপ্টার হতে পারে বা নাও হতে পারে, তবে ক্লায়েন্ট প্রোগ্রামার দৃষ্টিকোণ থেকে এটি অ-ইন্টারসেপ্টর সংস্করণের মতোই আচরণ করে। কীভাবে অবজেক্ট ম্যানেজার বাস্তবায়ন বিশদে কোনও ইন্টারসেপ্টারকে ফেরত বা না ফেরার সিদ্ধান্ত নেয়।
সেই প্রয়োগের বিশদটিতে আগ্রহী ব্যক্তিদের জন্য - যদি কোনও শ্রেণি বা that শ্রেণীর পিতামাতা শ্রেণীর একটি প্লাগইন কনফিগার করা থাকে তবে অবজেক্ট ম্যানেজার একটি ইন্টারসেপ্টারকে ফিরিয়ে দেয়। আপনি এটি বিকাশকারী মোড ইন্টারসেপ্টর শ্রেণিতে দেখতে পারেন
#File: vendor/magento/framework/Interception/ObjectManager/Config/Developer.php
public function getInstanceType($instanceName)
{
$type = parent::getInstanceType($instanceName);
if ($this->interceptionConfig && $this->interceptionConfig->hasPlugins($instanceName)
&& $this->interceptableValidator->validate($instanceName)
) {
return $type . '\\Interceptor';
}
return $type;
}
উত্পাদনের জন্য (যেমন সংকলিত মোড), ম্যাগেন্টো সংকলন মোডের সময় সিস্টেমটি প্রাক স্ক্যান করে এবং কোন ক্লাসে প্লাগইন প্রয়োজন তার একটি নোট তৈরি করে।
আসল প্রজন্মের ক্ষেত্রে, ম্যাজেন্টো একটি পিএইচপি অটোলোডার দিয়ে এটি পরিচালনা করে। যদি কোনও বিকাশকারী কোনও ক্লাস ইনস্ট্যান্ট করে (বা অন্যথায় কোনও শ্রেণীর নামের সাথে একটি পিএইচপি অটোল্যাড ইভেন্টটি class_exists
চালিত করে (কোনও প্রকার ইঙ্গিত, শ্রেণি, ইত্যাদি), এবং সুরকার ভিত্তিক অটোলোডার ক্লাস ফাইলটি খুঁজে না পায়, তবে দ্বিতীয় নিবন্ধিত অটোলোডার
Magento\Framework\Code\Generator\Autoloader::load
আলোড়ন সৃষ্টি হয়. এই অটোলোডার
vendor/magento/framework/Code/Generator/Autoloader.php
Magento\Framework\Code\Generator
নির্দিষ্ট নামকরণের নিদর্শনগুলির জন্য শ্রেণীর জন্য স্ক্যান (পরোক্ষভাবে শ্রেণীর মাধ্যমে ) স্ক্যান করবে। যদি শ্রেণীর নামটি শেষ হয় Interceptor
, ম্যাজেন্টো generateClass
এই ক্লাসে পদ্ধতিটির মাধ্যমে একটি ইন্টারসেপ্টার তৈরি করা শেষ করে
vendor/magento/framework/Code/Generator.php
এর থেকে খুঁজে বের করার জন্য অতিরিক্ত ক্লাস / অবজেক্ট রয়েছে Magento\Framework\Code\Generator
- তবে আমরা এটি পাঠকের অনুশীলন হিসাবে ছেড়ে দেব।