কোনও শ্রেণীর কনস্ট্রাক্টর ডিআই-তে কনটেক্সট অবজেক্টের উদ্দেশ্য কী? প্রসঙ্গটি কীভাবে কাজ করে?


23

ক্লাসের বেশিরভাগ কনস্ট্রাক্টরে একটি কনটেক্সট অবজেক্ট পাস করা হয়। আমি বুঝতে পারি না যে এই প্রসঙ্গটি কীভাবে কাজ করে। আমি আরও লক্ষ্য করেছি যে কখনও কখনও এটি নীচের মত প্যারেন্ট ক্লাসের কনস্ট্রাক্টরে পাস করা হয়।

public function __construct(
    \Magento\Framework\App\Action\Context $context,
    \Magento\Catalog\Model\Design $catalogDesign,
    \Magento\Catalog\Model\Session $catalogSession,
....
    parent::__construct(
        $context,
        $layoutFactory,

আপনি কী দয়া করে ব্যাখ্যা করতে পারেন যে এই নির্দিষ্ট প্রসঙ্গটি কীভাবে কাজ করে?

উত্তর:


30

নোট করুন যে এখানে বিভিন্ন প্রসঙ্গ অবজেক্ট রয়েছে, এক্ষেত্রে এটি \Magento\Framework\App\Action\Contextএবং এটি বোঝার জন্য আপনার এটিকে "অ্যাকশনকন্টেক্সট" হিসাবে পড়া উচিত। এটি সেই অ্যাপ্লিকেশন প্রসঙ্গে প্রতিনিধিত্ব করে যাতে ক্রিয়াটি কার্যকর করা হয়। অন্য কথায়, এটি আপনাকে অ্যাপ্লিকেশন স্টেট সহ সমস্ত অবজেক্টে অ্যাক্সেস দেয় যা একটি নিয়ামক ক্রিয়নের প্রয়োজন হয়, উদাহরণস্বরূপ রেজিস্ট্রি বা অনুরোধ অবজেক্ট।

প্রসঙ্গ শ্রেণীর নিজস্ব কার্যকারিতা নেই, এগুলি কেবল অন্য সামগ্রীর জন্য একটি ধারক। প্রতিটি নিয়ামক ক্রিয়ায় 20 টি পরামিতি না রাখার জন্য আপনি এগুলি শর্টকাট হিসাবে দেখতে পারেন। সমস্ত সাধারণ পরামিতি প্রসঙ্গ অবজেক্টে মার্জ করা হয়েছে।


আমি কীভাবে জানতে পারি কোনটি পৃথক পৃথক বস্তু রয়েছে $context?
লুস্ক্কু

@ লুকাস তাদের উত্স কোডটি দেখুন। আপনি কনটেক্সট কনস্ট্রাক্টরে অন্তর্ভুক্ত ক্লাসগুলি
পেয়েছেন

15

বিমূর্ত শ্রেণীর নির্মাতাদের পরিবর্তন থেকে তৃতীয় পক্ষের বিকাশকারীদের বিচ্ছিন্ন করার জন্য প্রসঙ্গ অবজেক্টগুলি প্রবর্তিত হয়েছিল।

ম্যাজেন্টো 1 তে প্রচুর "সহায়ক" আচরণ সহ বিমূর্ত শ্রেণি ক্লাস এক্সটেন্ডারের জন্য একটি সুবিধাজনক API হিসাবে বিবেচিত হয়েছিল। পদ্ধতি ও বিমূর্ত ক্লাসের অন্তর্নিহিত নির্ভরতা এই সৃষ্ট বিশাল সংখ্যা ( AbstractModel, AbstractBlock, AbstractAction)

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

বর্তমান পরিকল্পনাটি হ'ল এক পর্যায়ে ইন্টারফেস-ভিত্তিক এপিআই সহ উত্তরাধিকার ভিত্তিক এপিআইগুলি পরিত্যাগ করা।

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