পরিস্থিতি: আমি একজন ম্যাজেন্টো 2 মডিউল বিকাশকারী। আমি একটি কনফিগারেশন ফাইল তৈরি করতে চাই app/etc
। আমি চাই যে এই ফাইলটি অঞ্চল অনুযায়ী "স্কোপ" করা হোক
app/etc/my_file.xml
app/etc/frontend/my_file.xml
app/etc/adminhtml/my_file.xml
ম্যাজেন্টো 1 এ আমি কেবল একটি তৈরি করব config.xml
এবং আমার পথে যাব। এক্সপিএল ফাইলটিতেই অঞ্চলটির স্কোপিং ঘটেছিল। তবে ম্যাজেন্টো 2 এটির থেকে আলাদাভাবে যোগাযোগ করে
ম্যাজেন্টো 2-তে, এই স্কোপযুক্ত কনফিগারেশন ফাইলগুলি পড়ার জন্য আমার কোন ক্লাস ফাইল (গুলি?) তৈরি করা উচিত। এটি করার সঠিক "সঠিক" উপায়টি ম্যাজেন্টো 2 উত্স থেকে পরিষ্কার নয়। মূল কোডটি একাধিক পদ্ধতি গ্রহণ করে এবং এগুলির কোনওটিই কোনও @api
পদ্ধতির সাথে চিহ্নিত নয় । এটি সাধারণ মডিউল বিকাশকারী কাজের সাথে কীভাবে এগিয়ে যেতে হবে তা জানতে অসুবিধা বোধ করে। একটি গৌণ পার্শ্ব-প্রতিক্রিয়া হিসাবে, এটি কোনও ম্যাগেন্টো মডিউল বিকাশকারীকে মূল কনফিগারেশন ফাইলগুলি থেকে কীভাবে পড়া উচিত তা জানার পক্ষেও অসুবিধা হয় ।
একদিকে, মনে হচ্ছে "সঠিক" কাজটি করা একটি ফাইল সিস্টেম রিডার অবজেক্ট তৈরি করা। উদাহরণস্বরূপ, ম্যাজেন্টো import.xml
নিম্নলিখিত ফাইলগুলি লোড করছে বলে মনে হচ্ছে
#File: vendor/magento/module-import-export/Model/Import/Config/Reader.php
namespace Magento\ImportExport\Model\Import\Config;
class Reader extends \Magento\Framework\Config\Reader\Filesystem
{
public function __construct(
//...
$fileName = 'import.xml',
//...
) {
parent::__construct(
$fileResolver,
$converter,
$schemaLocator,
$validationState,
$fileName,
$idAttributes,
$domDocumentClass,
$defaultScope
);
}
//...
}
বেস Magento\Framework\Config\Reader\Filesystem
শ্রেণীর মতো দেখে মনে হচ্ছে এটির ক্ষেত্রটি সমাধান করার কোড রয়েছে code
তবে কিছু ম্যাজেন্টো কনফিগারেশন ফাইলকে এই প্যাটার্নটি রক্ষা করা বলে মনে হচ্ছে। এই ফাইলগুলির জন্য পাঠক থাকাকালীন ( event.xml
এই উদাহরণে)
vendor/magento/framework/Event/Config/Reader.php
এই পাঠকদের ব্যবহার করে এমন "স্কোপড ডেটা" ক্লাস রয়েছে ।
#File: vendor/magento/framework/Event/Config/Data.php
class Data extends \Magento\Framework\Config\Data\Scoped
{
public function __construct(
\Magento\Framework\Event\Config\Reader $reader,
//...
) {
parent::__construct($reader, $configScope, $cache, $cacheId);
}
}
এটি এটিকে দেখে মনে হচ্ছে স্কোপড রিডার ক্লাসগুলি মডিউল বিকাশকারীকে তৈরি করা উচিত। তবে সমস্ত কনফিগারেশন ফাইলের এই স্কোপযুক্ত পাঠক নেই।
ম্যাগান্টো 2 মডিউল বিকাশকারীদের অনুসরণ করার জন্য কি স্পষ্ট পথ রয়েছে? বা এটি কি ম্যাগেন্টো 2 মডিউল বিকাশকারীদের নিজস্ব উপায়ে আসা উচিত, এবং ফলস্বরূপ বিশৃঙ্খলা / অ-মানক-কনফিগারেশন-লোডিং কেবল ব্যবসা করার ব্যয়?
সরকারী ডকুমেন্টেশন প্রাপ্তিসাধ্য ক্লাস কিছু আচ্ছাদন একটি ভাল পেশা আছে, কিন্তু কিছুই আসলে reconciles কোন স্পষ্ট দিক নির্দেশনা যার উপর জমাটবদ্ধ বাস্তবায়ন আমরা ব্যবহার অনুমান করছি আছে, অথবা যদি প্রত্যাশা প্রত্যেক মডিউল কিভাবে এই করবেন করার সিদ্ধান্ত নেয় তার নিজের।