ম্যাজেন্টো 2: সরাসরি বর্গের পথের তুলনায় বিবৃতিটি ব্যবহার করবেন?


14

আমি একটি পয়েন্ট মিস করতে পারি তবে আমি কেবল ভাবছি কেন কখনও কখনও নির্দিষ্ট শ্রেণীর জন্য "ব্যবহার" বিবৃতি থাকে এবং কখনও কখনও আমরা তা করি না।

উদাহরণ app\code\Magento\Email\Model\Template.php:, আমাদের কাছে ফাইলের শীর্ষে রয়েছে:

namespace Magento\Email\Model;

use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;

তারপরে __constructপদ্ধতিতে আমাদের নীচের প্যারামিটারগুলি রয়েছে:

public function __construct(
    \Magento\Framework\Model\Context $context,
    \Magento\Framework\View\DesignInterface $design,
    \Magento\Framework\Registry $registry,
    \Magento\Store\Model\App\Emulation $appEmulation,
    StoreManagerInterface $storeManager,
    \Magento\Framework\View\Asset\Repository $assetRepo,
    \Magento\Framework\Filesystem $filesystem,
    \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
    \Magento\Email\Model\Template\Config $emailConfig,
    \Magento\Email\Model\TemplateFactory $templateFactory,
    \Magento\Framework\Filter\FilterManager $filterManager,
    \Magento\Framework\UrlInterface $urlModel,
    \Magento\Email\Model\Template\FilterFactory $filterFactory,
    array $data = []
)

সুতরাং আমরা পরিষ্কারভাবে দেখতে পারি যে আমরা use Magento\Store\Model\StoreManagerInterface;ক্লাসের শীর্ষে ডেকেছি , আমরা StoreManagerInterface $storeManagerকনস্ট্রাক্টর পরামিতিগুলিতে করতে সক্ষম হয়েছি ।

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

  • কেন আমরা কেবল এক শ্রেণির জন্য এটি করি?
  • কেন আমরা useকনস্ট্রাক্টরের প্রতিটি শ্রেণীর জন্য একটি বিবৃতি যুক্ত করতে পারি না যাতে আমাদের পূর্ণ শ্রেণির পথটি টাইপ করতে না হয়?
  • বা অন্য পথে, আমরা কেন useবিবৃতি থেকে মুক্তি না পেয়ে StoreManagerInterfaceক্লাসের পুরো পথটি টাইপ করব না ?

উত্তর:


15

নামের বিরোধগুলি (ভিন্ন ভিন্ন "প্রসঙ্গ" ক্লাসের মতো) বাদে অন্যের চেয়ে বেশি পছন্দ করার কোনও প্রযুক্তিগত কারণ নেই। তবে এগুলি উপকরণ দিয়ে সমাধান করা যায় এবং আমি সাধারণত এটি করি:

use Magento\Framework\Model\Context as ModelContext;

আমি ধরে নিই যে মূলত অনেকগুলি পদ্ধতি, বিশেষত নির্মাতারা প্রথমে রূপান্তর সরঞ্জামের মতো সরঞ্জাম দ্বারা উত্পাদিত হয়েছিল এবং পরে "ব্যবহার" আমদানি ব্যবহার করে পরিবর্তিত হয়নি।

সুতরাং আমি পরামর্শ দিচ্ছি যে আপনার নিজের কোডে আপনি সর্বদা "ব্যবহার" সহ ক্লাস আমদানি করুন আসল কোডটি কম ভার্বোজ এবং আরও পাঠযোগ্য able


সুতরাং কেবল পরিষ্কার করার জন্য কোনও useনির্দিষ্ট দল নেই যে নির্দিষ্ট ক্লাসের জন্য আমি যুক্ত করেছিলাম?
রাফেল ডিজিটাল পিয়ানিজমে

1
না। আমার কাছে দেখে মনে হচ্ছে এটি পরে কেউ আইডিই ব্যবহার করেছেন যা স্বতঃসম্পূর্ণতা ব্যবহার করার সময় স্বয়ংক্রিয়ভাবে ব্যবহারের বিবৃতি যুক্ত করে by
ফ্যাবিয়ান শেমংলার

2

ব্যবহার নির্দিষ্ট পরিস্থিতির উপর নির্ভর করে। আমার পদ্ধতিটি হ'ল:

ক্লাস কেবলমাত্র একটি ফাইলের মধ্যে একবার উল্লিখিত হয়েছে - FQN

পুরোপুরি যোগ্য নাম রেখে দিন । এটি পঠনযোগ্যতা উন্নত করে কারণ আপনার আবার ব্যবহারের বিভাগটি দেখার দরকার নেই ।

শ্রেণীর নাম একাধিকবার ব্যবহৃত হয়েছে - আমদানি করুন

এটি ব্যবহার বিভাগে রাখুন । এটি কোডটিকে সংক্ষিপ্ত করে তোলে যেখানে ক্লাসটির উল্লেখ করা হয়।

ক্লাস একবার ব্যবহার করা হয়েছে তবে আমার একটি সংক্ষিপ্ত স্বরলিপি প্রয়োজন - আমদানি

একটি উদাহরণ দিয়ে আরও ভাল ব্যাখ্যা।

FQN

$collection->getSelect()
           ->joinInner(['campaign_products' => $subSelect],
               'campaign_products.product_id = e.entity_id',
               [self::FIELD_SORT_ORDER => "IFNULL(IF(0 = " . \Custome\Module\Api\Data\ProductListInterface::SORT_ORDER . ", NULL, " . \Custome\Module\Api\Data\ProductListInterface::SORT_ORDER . "), {$defaultSortValue})"]
           );

আমদানি

$collection->getSelect()
           ->joinInner(['campaign_products' => $subSelect],
               'campaign_products.product_id = e.entity_id',
               [self::FIELD_SORT_ORDER => "IFNULL(IF(0 = " . ProductListInterface::SORT_ORDER . ", NULL, " . ProductListInterface::SORT_ORDER . "), {$defaultSortValue})"]
           );

আমার মতে ২ য় উদাহরণ পড়া সহজ। (তবে সত্যি কথা বলতে আমি আরও ধরণের পাঠযোগ্যতা দেওয়ার জন্য এখানে ধ্রুবকের পরিবর্তে ভেরিয়েবল ব্যবহার করতে পছন্দ করব))

ম্যাজেন্টো 2 এপিআই ইন্টারফেস

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

জেএসওএন বা এক্সএমএল থেকে কীভাবে ডেটা রূপান্তর করতে হয় তা নির্ধারণ করার জন্য টীকাগুলিকে ম্যাজেন্টো ফ্রেমওয়ার্ক দ্বারা পার্স করা হয়।

শ্রেণি আমদানি (যা শ্রেণীর উপরে বিবৃতি ব্যবহার করুন) প্রয়োগ করা হয় না!

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