Magento কত নকশা নিদর্শন আছে?


15

ম্যাজেন্টো 2 এর কতটি নকশার নিদর্শন রয়েছে?

উত্তর:


37

ম্যাজেন্টো 1/2 ডিজাইনের প্যাটার্নস

পর্ব 1: এমভিসি

ম্যাজেন্টো একটি ডিওএম ভিত্তিক কনফিগারেশন স্তরটি ব্যবহার করে একটি অনন্য এমভিসি প্যাটার্ন ব্যবহার করে। এটি নিয়মিত মডেল-ভিউ-কন্ট্রোলার আর্কিটেকচারের শীর্ষে অ্যাপ্লিকেশনটির কনফিগারেশন এবং ক্রিয়াকলাপ চালনা করার জন্য xml এর উপকার করে।

পার্ট 2: ফ্রন্ট কন্ট্রোলার

ম্যাজেন্টো এর প্রয়োগের জন্য ওয়ার্কফ্লো প্রয়োগ করতে ফ্রন্ট কন্ট্রোলার প্যাটার্ন ব্যবহার করে। এর সমস্ত অনুরোধের জন্য এটির একটি একক প্রবেশ পয়েন্ট (সূচি.পিএফপি) রয়েছে। আসুন দেখুন এটি কীভাবে কাজ করে।

পার্ট 3: কারখানা

কারখানার পদ্ধতিটি ম্যাজেন্টোতে ক্লাস ইনস্ট্যান্ট করতে ব্যবহৃত হয়। আপনি ম্যাজেন্টোতে একটি ক্লাস ইনস্ট্যান্ট করে একটি উপযুক্ত পদ্ধতি কল করে একটি বিমূর্ত নামটি পাঠান যা একটি শ্রেণীর গোষ্ঠীর প্রতিনিধিত্ব করে শ্রেণীর নাম উপস্থাপন করে। শ্রেণি গোষ্ঠী এবং তাদের উপযুক্ত বিমূর্ততাগুলি আপনার মডিউলের / ইত্যাদি / ফোল্ডারে আপনার কনফিগারেশন এক্সএমএল ফাইলগুলিতে ঘোষণা করা হয়।

পার্ট 4: সিঙ্গলটন

বেশিরভাগ কারখানার শ্রেণীর বিমূর্ততা এবং ম্যাজেন্টোতে শ্রেণি গোষ্ঠীর মতো, সিঙ্গেলটন প্যাটার্নটি ব্লক এবং ক্লাসগুলির জন্য একই রকম হয়।

পর্ব 5: রেজিস্ট্রি

তিনি রেজিস্ট্রি প্যাটার্নটি মূলত এমন একটি প্যাটার্ন যা কোনও সংস্থান ব্যবহারের জন্য কোনও অবজেক্ট বা ডেটা সর্বজনীন বৈশ্বিক সুযোগে উপলব্ধ হতে দেয়।

অংশ 6: প্রোটোটাইপ

ম্যাজেন্টোতে প্রোটোটাইপ প্যাটার্নটি অ্যাবস্ট্রাক্ট ফ্যাক্টরি প্যাটার্নের এক্সটেনশন হিসাবে ব্যবহৃত হয়। এটি নিশ্চিত করে যে কোনও উপযুক্ত সাবক্লাসটি উপযুক্ত জিনিসের মাধ্যমে ইনস্ট্যান্ট করা হয় যা কোনও বস্তুকে বরাদ্দ করা হয়। এটার মানে কি? মূলত, এর অর্থ হ'ল যখনই আপনাকে একটি নির্দিষ্ট শ্রেণি পেতে হবে যা তার প্যারেন্ট টাইপের মাধ্যমে সংজ্ঞায়িত করা হয়, প্রোটোটাইপ প্যাটার্ন নিশ্চিত করে যে আপনি সঠিক বর্গটি পাবেন যা আপনার প্রয়োজনীয়তাগুলি পরিচালনা করতে পারে।

পর্ব 7: অবজেক্ট পুল

অবজেক্ট পুল প্যাটার্নটি পুনরায় ইনস্ট্যান্ট করার পরিবর্তে এবং একবারে ধ্বংস হয়ে যাওয়ার পরে অবজেক্টগুলিকে বারবার ব্যবহারের জন্য প্রস্তুত রাখে। এটি মেমরির খরচ এবং গণনা চক্রের সঞ্চয় করার দুর্দান্ত উপায়।

অংশ 8: Iterator

ইটারেটর প্যাটার্ন হ'ল একটি ডিজাইন প্যাটার্ন যা অন্য কোনও শ্রেণীর উপাদানগুলির মাধ্যমে কোনও অবজেক্টকে অতিক্রম করতে দেয়। এটি আপনাকে একটি পুনরুক্তি নির্দিষ্ট করতে এবং আবর্তনের অনুমতি দেয় এমন অন্তর্নিহিত কাঠামো পরিবর্তন না করেই একাধিক পৃথক ডেটা পাস করার অনুমতি দেয়।

পর্ব 9: অলস লোড হচ্ছে

অলস লোডিং হ'ল একটি নকশা প্যাটার্ন যা অবজেক্টটির ডাকা না হওয়া অবধি অবজেক্টের লোডিংয়ে বিলম্ব করে। ম্যাজেন্টো দিয়ে, তারা এগুলি বস্তুগুলির সাথে নয়, তবে ডেটা ব্যবহার করে।

পার্ট 10: পরিষেবা লোকেটার

পরিষেবা লোকেটার হ'ল একটি নকশা প্যাটার্ন যা কোনও ব্যবহারকারীকে বিমূর্ত স্তরের অভ্যন্তরে প্রক্রিয়াটি আবদ্ধ করে একটি পরিষেবা পেতে সক্ষম করে to এটি ব্যবহারকারীর উপযুক্ত সময়ে বা সেই পরিষেবাটি রানটাইমে কী তা জেনেও পুনরুদ্ধার করতে দেয় rie

অংশ 11: মডিউল

মডিউল ডিজাইন প্যাটার্ন হ'ল মডুলার প্রোগ্রামিংয়ের একটি রূপ যা কোনও প্রোগ্রামের কার্যকারিতাটিকে স্বতন্ত্র, বিনিময়যোগ্য মডিউলগুলিতে বিভক্ত করার উপর জোর দেয়।

অংশ 12: পর্যবেক্ষক

পর্যবেক্ষক প্যাটার্নটি যেখানে কোনও ইভেন্ট শ্রোতার একটি প্রয়োগের কার্যকর করার সময় একটি নির্দিষ্ট সময়ে সেট করা থাকে। অ্যাপ্লিকেশনটির অন্যান্য উপাদানগুলি এই ইভেন্ট শ্রোতাদের "হুক" করতে পারে এবং এই মুহুর্তে তাদের কোড কার্যকর করতে পারে।

পার্ট 13: সক্রিয় রেকর্ড

অবজেক্টগুলি ডাটাবেস সারণীতে একটি সারির প্রতিনিধিত্ব করে। এই অবজেক্টগুলির এমন বৈশিষ্ট্য থাকতে হবে যা টেবিলের কাঠামোর প্রতিনিধিত্ব করে কলামগুলি প্রতিফলিত করে এবং ডাটাবেসে এই বৈশিষ্ট্যগুলির পরিবর্তনের অনুমতি দেওয়ার পদ্ধতিগুলি।

ম্যাজেন্টো দ্বারা প্যাটার্নটির ব্যবহার

Mage_Core_Model_Abstract শ্রেণীর পরে উত্তরাধিকারসূত্রে প্রাপ্ত ক্লাসগুলির লোড (), সংরক্ষণ () এবং মুছে ফেলা () পদ্ধতিগুলি যা ক্লাসটির সাথে সংযুক্ত রয়েছে তা সারণীতে রেকর্ডিং লোডিং, সংশোধন, তৈরি বা মুছে ফেলার অনুমতি দেয়। অতিরিক্ত হিসাবে, Mage_Core_Model_Abstract বর্গটি ভারিয়ান_অবজেক্ট থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় যা আমাদেরকে সত্যিকারের যাদুকরী পদ্ধতিগুলিতে অ্যাক্সেস দেয় __set () এবং __get () যা প্রদত্ত বস্তুর বৈশিষ্ট্য সহ একটি ডাটাবেস সারণীতে কলামগুলির স্বয়ংক্রিয় ম্যাপিংয়ের জন্য দায়ী।

অ্যাডিশন ম্যাজেন্টো 2

পরিষেবা চুক্তি নকশা প্যাটার্ন

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

পরিষেবা চুক্তিগুলি ম্যাজেন্টোর পরিমিতি বাড়ায়। অন্যান্য বাহ্যিক এবং ম্যাজেন্টো মডিউল প্রয়োগকারী সুষ্ঠু-সংজ্ঞায়িত এবং টেকসই এপিআই নিশ্চিত করে ম্যাগন্টোকে সহজ আপগ্রেড করতে ব্যবসায়ীদের সহায়তা করে। REST বা SOAP ইন্টারফেসের মাধ্যমে ব্যবসায়ের যুক্তি উন্মোচন করার একটি সহজ উপায় সরবরাহ করুন।

অবজেক্ট ম্যানেজার

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

অপ্রত্যাশিত উদ্দেশ্য

ইভেন্ট ম্যানেজার, গ্রাহক হিসাবরক্ষণ ব্যবস্থাপনার পরিষেবা হিসাবে তাদের নিজস্ব পরিচয় নেই।

নন-ইনজেক্টেবল ওবিজেটস

যেমন গ্রাহক, পণ্য ইত্যাদির মতো এই সত্তাগুলির সাধারণত তাদের পরিচয় এবং রাজ্য থাকে কারণ তাদের পরিচয় রয়েছে তাই আমাদের সত্তার কোন সঠিক উদাহরণটি কাজ করতে হবে তা জানা গুরুত্বপূর্ণ।

নির্ভরতা ইনজেকশন

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

ফ্যাক্টরি প্যাটার্ন বা কারখানা শ্রেণি:

Magento 2 কারখানার ক্লাসে অবজেক্ট ম্যানেজার এবং ব্যবসায়ের কোডের মধ্যে একটি স্তর তৈরি করে। কারখানার ক্লাসগুলি স্বতঃ উত্পাদিত হওয়ায় তাদের স্পষ্টভাবে সংজ্ঞায়িত করা দরকার না। ইনজেকশনযোগ্য অবজেক্টের জন্য আমাদের কারখানার ক্লাস তৈরি করা উচিত।

প্রক্স প্যাটার্ন

প্রক্সি ক্লাসগুলি অন্য শ্রেণীর জায়গায় কাজ করার জন্য ব্যবহৃত হয় এবং ম্যাজেন্টো 2 এ সেগুলি কখনও কখনও সংস্থান ক্ষুধার্ত শ্রেণীর জায়গায় ব্যবহার করা হয়। কোন প্রক্সি ক্লাসগুলি বোঝার জন্য আসুন সেই কারণটি দেখুন যা প্রক্সি ক্লাসগুলির সংঘটনকে বাড়ে। যেমনটি আমরা জানি যে ম্যাজেন্টো বস্তু তৈরির জন্য কনস্ট্রাক্টর ইঞ্জেকশন ব্যবহার করে এবং আমরা যখন কোনও বস্তুকে ইনস্ট্যান্ট করি তখন তার নির্মাণকারীর সমস্ত শ্রেণি ততক্ষণে তড়িঘড়ি করে কনস্ট্রাক্টরের মাধ্যমে ইনস্ট্যান্টেশনের একটি শৃঙ্খলে নিয়ে যায়, এটি প্রক্রিয়াটি সত্যিই কমিয়ে দেয় এবং কোনও অ্যাপ্লিকেশনটির কার্যকারিতাকে প্রভাবিত করতে পারে , তাই চেইন ইনস্ট্যান্টেশন বন্ধ করার জন্য ম্যাজেন্টো প্রক্সি ক্লাস ব্যবহার করে।

নীচের কোডটি দেখতে দিন:

Magento\Catalog\Model\Product\Attribute\Source\Status\Proxy

Magento\Catalog\Model\Product\Link\Proxy

সুতরাং উপরের কোডে, আমরা ক্যাটালগ প্রডাক্ট স্ট্যাটাস এবং প্রোডাক্টলিঙ্কের জন্য প্রক্সি ক্লাস ব্যবহার করছি। আমরা যখন দৌড়

 php bin/magento setup:di:compile 

ম্যাজেন্টো কিছু স্থির কনভেনশন সহ ডায়.এক্সএমএল ব্যবহার করে ফ্লাইতে প্রক্সি ক্লাস তৈরি করে, সুতরাং প্রকৃত শ্রেণীর অবজেক্টের সাথে আসল বস্তুর প্রতিস্থাপন করে। এটি কীভাবে কাজ করছে তা বুঝতে এখন আমাদের প্রক্সি ক্লাসটি দেখুন

প্রক্সি তৈরির সময় কিছু সাধারণ কনভেনশন ম্যাগেন্তো অনুসরণ করে:

  • প্রক্সি শ্রেণীর নাম স্থান মূল হিসাবে একই হবে (ম্যাজেন্টো \ ক্যাটালগ \ মডেল \ পণ্য \ বৈশিষ্ট্য rib উত্স \ স্থিতি)
  • প্রক্সি ক্লাসটি কেবলমাত্র একটি অবজেক্ট অর্থাৎ বস্তু পরিচালককে প্রসারিত করে
  • __ ঘুম, __ ভেকের মতো যাদু ফাংশন রয়েছে যা কেবলমাত্র নির্দিষ্ট ক্রিয়া এবং ফাংশন হিসাবে ডাকা হয় যেমন __ ক্লোনটি মূল শ্রেণীর একটি বস্তু তৈরি করবে এবং যখন প্রয়োজন হবে কেবল তখনই বস্তুটি সরবরাহ করবে ( অলস লোডিং ডিজাইনের প্যাটার্ন ব্যবহার করে ), ফলে উন্নতি হয় অ্যাপ্লিকেশনটির কর্মক্ষমতা https://devdocs.magento.com/guides/v2.0/existance-dev-guide/proxies.html

প্লাগইন (ইন্টারসেপ্টর)

সংক্ষিপ্ত বিবরণ

একটি প্লাগইন, বা ইন্টারসেপ্টর, এমন একটি শ্রেণি যা ফাংশন কল এবং সেই ফাংশন কলটির আগে, তার আগে বা তার চারপাশে চলমান কোডটিকে বাধা দিয়ে পাবলিক ক্লাস ফাংশনগুলির আচরণকে পরিবর্তন করে। এটি আপনাকে কোনও শ্রেণি বা ইন্টারফেসের জন্য মূল, সর্বজনীন পদ্ধতির আচরণকে বিকল্প হিসাবে বা প্রসারিত করতে দেয়।

যেসব এক্সটেনশানগুলি পাবলিক পদ্ধতির আচরণকে বাধা দিতে এবং পরিবর্তন করতে ইচ্ছুক তারা প্লাগইন শ্রেণি তৈরি করতে পারে যা প্লাগইন হিসাবে উল্লেখ করা হয়।

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

সীমাবদ্ধতা

নিম্নলিখিতগুলির সাথে প্লাগিনগুলি ব্যবহার করা যাবে না:

  • চূড়ান্ত পদ্ধতি
  • ফাইনাল ক্লাস
  • অ-পাবলিক পদ্ধতি
  • স্থির পদ্ধতি
  • __construct
  • ভার্চুয়াল প্রকার
  • ম্যাজেন্টো \ ফ্রেমওয়ার্ক \ ইন্টারসেপশন বুটস্ট্র্যাপ করার আগে অবজেক্টগুলি ইনস্ট্যান্ট করা হয়
  • অবজেক্ট ম্যানেজার (যেমন সরাসরি নতুন ব্যবহার করে) দ্বারা তাত্ক্ষণিকভাবে নয় এমন বস্তুগুলি। https://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html

ObjectManager

সংক্ষিপ্ত বিবরণ

বড় বড় অ্যাপ্লিকেশন, যেমন ম্যাজেন্টো অ্যাপ্লিকেশন, ইনস্ট্যান্টেশনের সময় অবজেক্টগুলি রচনা করার সময় বয়লারপ্লেট কোড এড়ানোর জন্য একটি অবজেক্ট ম্যানেজার ব্যবহার করে।

ম্যাজেন্টো ফ্রেমওয়ার্কে, অবজেক্টম্যানেজারইন্টারফেস বাস্তবায়ন কোনও অবজেক্ট ম্যানেজারের দায়িত্ব পালন করে।

দায়িত্ব

অবজেক্ট ম্যানেজারের নিম্নলিখিত দায়িত্ব রয়েছে:

কারখানা এবং প্রক্সিগুলিতে বস্তু সৃষ্টি creation অনুরোধ করা হলে ক্লাসের একই ভাগ করা দৃষ্টান্তটি ফিরিয়ে একক প্যাটার্ন প্রয়োগ করা Imp যখন কোনও কনস্ট্রাক্টর তার ইন্টারফেসের জন্য অনুরোধ করে তখন পছন্দের শ্রেণিকে ইনস্ট্যান্ট করে নির্ভরশীলতা পরিচালনা management শ্রেণি নির্মাতারা স্বয়ংক্রিয়ভাবে প্যারামিটার ইনস্ট্যান্ট করছে। https://devdocs.magento.com/guides/v2.0/extension-dev-guide/object-manager.html

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