শ্রেণীর অবস্থান এবং নামগুলির জন্য ম্যাজেন্টো 2 সেরা অনুশীলন


15

ইন Magento 1আমরা এই ডিরেক্টরিগুলি থেকে আমাদের ক্লাস স্থাপন করতে ব্যবহার করা হয়েছে

  • বাধা
  • সাহায্যকারী
  • মডেল
  • সংস্থান

এবং নামের মাঝখানে কোনও মূল অক্ষর ছাড়াই একটি সাধারণ শ্রেণীর নাম ব্যবহার করুন।

আমরা যদি কিছু ক্ষেত্রে একবার দেখে নিই Magento 2 Core

সাহায্যকারী

অবস্থান :
- \Foo\Bar\Helper
নাম :
- *.php
উদাহরণ :
- \Magento\ImportExport\Helper\Report
-\Magento\Cms\Helper\Wysiwyg\Images


পর্যবেক্ষকদের

অবস্থান :
- \Foo\Bar\Observer
নাম :
- *.php
- *Observer.php
উদাহরণ :
- \Magento\CustomerCustomAttributes\Observer\SalesOrderAddressAfterLoad
-\Magento\CustomerBalance\Observer\ProcessBeforeOrderPlaceObserver


প্লাগইন

অবস্থান :
- \Foo\Bar\Plugin
নাম :
- *.php
- *Plugin.php
উদাহরণ :
- \Magento\Catalog\Plugin\Block\Topmenu
- \Magento\PageCache\Model\App\FrontController\BuiltinPlugin
উত্স : http://devdocs.magento.com/guides/v2.0/existance-dev-guide/plugins.html#declaring-a-plugin


ConfigProvider

অবস্থান :
- \Foo\Bar\Model
নাম :
- *ConfigProvider.php
উদাহরণ :
- \Magento\Tax\Model\TaxConfigProvider
-\Magento\Payment\Model\IframeConfigProvider


আমার প্রশ্নগুলি হ'ল:

  • এর জন্য যদি কোনও good/ bad/ bestঅনুশীলন থাকে Magento 2?
  • আমি DataProviderউদাহরণস্বরূপ একটি কাস্টম তৈরি করতে চাইলে এটি কী হবে?
    • \Foo\Bar\Provider\CustomDataProvider
    • \Foo\Bar\DataProvider\Custom
    • \Foo\Bar\Model\Provider\CustomDataProvider
    • \Foo\Bar\Helper\Provider\CustomDataProvider
  • শ্রেণীর নাম এবং অবস্থান নির্ধারণ কিভাবে করবেন, মডিউলের মূল অংশে একটি ফোল্ডার, মডেল, সাহায্যকারী ইত্যাদি?
  • এটি কি পুনরুদ্ধার করা ডেটা উত্স / ডেটা ধরণের উপর নির্ভর করে?
  • আমাদের কখন শ্রেণীর নামের সাথে প্রত্যয় যুক্ত করতে হবে?


এর প্রতিক্রিয়াটির একটি অংশ Virtual Types: https://commune.magento.com/t5/Magento-DevBlog/ ভার্চুয়াল- টাইপস- নামকরণ- কনভেনশন / বিএপি / 61510

উত্তর:


10

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

আমার সুপারিশটি তাদের কার্যকারিতা অনুসারে গোষ্ঠী করা।

  • পর্যবেক্ষক Vendor/Module/Observer
  • ইন প্লাগ ইন Vendor/Module/Plugin
  • তথ্য সরবরাহকারী Vendor/Module/DataProvider
  • ui উপাদান সম্পর্কিত ক্লাস Vendor/Module/Ui

তবে নামের সদৃশতা এড়াতে চেষ্টা করুন। আমি অর্থহীন Vendor/Module/DataProvider/CustomDataProviderহবে।

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

সংক্ষিপ্তসার হিসাবে, আপনি কীভাবে এটি করেন এটি আপনার উপর নির্ভর করে এটিতে কেবল সামঞ্জস্য বজায় রাখুন।

কার্যকারিতার দিক থেকে আপনি ক্লাসগুলি কোথায় রাখবেন তা গুরুত্বপূর্ণ নয় important এমনকি আপনি তাদের সাথে পাগল হয়ে যেতে পারেন এবং সেগুলি সরাসরি Vendor/Moduleফোল্ডারে রেখে দিতে পারেন তবে আপনি সম্ভবত এটি চান না।

আমি মনে করি (তবে পুরোপুরি নিশ্চিত নয়) যে একমাত্র সীমাবদ্ধতা হ'ল নিয়ন্ত্রকগুলি অবশ্যই ফোল্ডারে থাকতে হবে Controller


আমি সম্মত হই যে আমরা পাগল হতে পারি, এটি একটি খারাপ বিষয় যতটা খারাপ তবে আপনি যা বলেছিলেন তা আমাদের দেখার বিষয় অনুসারে। ম্যাজেন্টো লাইভ ফ্রান্সে ঘোষিত হিসাবে যখন ম্যাজেন্টো তাদের অভ্যন্তরীণ প্রযুক্তিগত দৃষ্টিভঙ্গিগুলি ভাগ করে দেবে তখন আমাদের এই পয়েন্টগুলিতে আরও তথ্য থাকবে আপনার মতামতটি ভাগ করে নেওয়ার জন্য আপনাকে ধন্যবাদ
ম্যাটথো জিওফ্রে

7

আমি এটির মতামত ভিত্তিক গণ্য করি তবে আমি সম্মত হই যে ক্লাসের নামকরণ এবং এম 2 এর অবস্থান সম্পর্কিত কিছু অসঙ্গতি রয়েছে।

ফোল্ডার নামকরণ সংক্রান্ত যে তালিকাটি আমি নিয়ে এসেছি তা এখানে। আমার মডিউলটি অন্য কারও জন্য ব্রাউজ করা এবং বুঝতে সহজ করার জন্য আপনি যখন পারেন তখন সর্বদা আপনার এই ফোল্ডারগুলি ব্যবহার করা উচিত:

  • বাধা
  • নিয়ামক
  • মডেল
  • পর্যবেক্ষক
  • সেটআপ
  • পরীক্ষা
  • ui
  • ইত্যাদি
  • i18n
  • দৃশ্য
  • ক্রন
  • সাহায্যকারী
  • কনসোল
  • api
  • প্লাগ লাগানো
  • তথ্য প্রদানকারী

তার উপরে, এম 2 কিছু নির্দিষ্ট নির্দিষ্ট ফোল্ডার ব্যবহার করে তবে আমি সেগুলিকে এই তালিকায় অন্তর্ভুক্ত করি নি:

  • প্রাইসিং
  • অ্যাপ
  • গ্রাহক তথ্য
  • সেবা
  • প্রবেশপথ
  • নথি পত্র
  • এডাপটার
  • উপাদান
  • TemplateEngine

এম 2 এর সাথে ভাল জিনিস হ'ল আপনি যা প্রয়োজন ফোল্ডারটি ব্যবহার এবং তৈরি করতে পারেন। যদি উপরের তালিকায় কোনও কিছু অন্তর্ভুক্ত না থাকে তবে আপনার নিজের ফোল্ডারটি তৈরি করুন এবং এতে আপনার ক্লাসগুলি রাখুন কেবল সামঞ্জস্যপূর্ণ হওয়ার চেষ্টা করুন।


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

6

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

উদাহরণস্বরূপ, ব্যবহার Model/Config/Converter.phpনা করে নামটি OrderStateMachine/TransitionsConfiguration/XmlToArrayConverter.phpএকটি মডিউল এবং একটি শ্রেণি যা করে তা আরও অনেক কিছু বলে।


যেমনটি আপনি বলেছেন যে এটি আমাদের জন্য স্পষ্ট করে তুলতে আরও চিন্তাভাবনা প্রয়োজন তবে যে কেউ এই এক্সটেনশনটি দেখছেন। যা মুহূর্তে জিনিসগুলিকে আরও শক্ত করে তোলে তবে সময়ের সাথে সাথে আরও কার্যকর। আপনার উত্তরের জন্য আপনাকে ধন্যবাদ
ম্যাথো জিওফ্রে

3

উপরে ইতিমধ্যে কিছু ভাল উত্তর আছে। আমি যেটি যোগ করতে চাই তা হ'ল আপনার কোডটি নীচে স্থাপন করা এড়ানো উচিত app/codeএবং পরিবর্তে কোনও রচয়িতা ভিত্তিক ইনস্টলেশন পদ্ধতি ব্যবহার করুন যা আপনার কোডটি নীচে রেখে শেষ করবে vendor/


হ্যাঁ চিন্তিত হবেন না আমি এটি সম্পর্কে অবগত আছি, ফর্ম্যাটটি কেবল আমার প্রশ্নের উদাহরণের জন্য :) তবে আপনি ঠিক সেই ব্যক্তির পক্ষে সঠিক যারা জানেন না যে এটিকে পরিষ্কার করার জন্য আমি সম্পাদনা করব। ধন্যবাদ
ম্যাথ্যাও জিওফ্রে

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