কম্পোনেন্টরেজিস্টার: ম্যাজেন্টো 2 তে লাইব্রেরি কীভাবে ব্যবহার করবেন


15

ম্যাজেন্টো 2 তে আমাদের 4 ধরণের উপাদান রয়েছে, কারণ আমি তাদের মধ্যে তিনটি ব্যবহার করে চলেছি, তবে আমার প্রশ্নটি কীভাবে const LIBRARY = 'library';উপাদানটি ব্যবহার করতে হয় ।

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

/**#@+
* Different types of components
*/
const MODULE = 'module';
const LIBRARY = 'library';
const THEME = 'theme';
const LANGUAGE = 'language';

আমি const LIBRARY = 'library';অফিসিয়াল Magento 2 ডকুমেন্টেশন সম্পর্কে কোনও তথ্য খুঁজে পাইনি আপনার উপাদান নিবন্ধ করুন

উত্তর:


2

আমি নিশ্চিত নই কেন এটি সরকারী ডকুমেন্টেশনে নথিভুক্ত করা হয়নি তবে আমি যা বুঝতে পারি তা থেকে এটি কীভাবে করা উচিত তা এখানে রয়েছে:

সুতরাং এটি যেমন আপনার রেজিস্টার মডিউলগুলির সাথে খুব অনুরূপ, আপনাকে কেবল lib/internal/Your/Library/registration.phpনিম্নলিখিত সামগ্রী দিয়ে তৈরি করতে হবে :

<?php

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LIBRARY,
    'your/library',
    __DIR__
);

এছাড়াও আপনি জানতে পারেন ঠিক সঠিকভাবে এখানে নথিভুক্ত হয়: http://devdocs.magento.com/guides/v2.0/architecture/archi_perspectives/components/modules/mod_conventions.html

এই লাইব্রেরিগুলি ব্যবহার / লোড করার জন্য আপনি লাইব্রেরির সাথে ঠিক একইভাবে অনুসরণ করেন Magento\Framework। সুতরাং ব্যবহার:

use Your\Library\Custom\Class;

আপনি ফোল্ডার registration.phpঅধীনে কোর খুঁজে পেতে পারেনlib/internal/Magento/Framework


ধন্যবাদ @ রাফেল, দয়া করে কীভাবে আমাকে এই লাইব্রেরিগুলি তৃতীয় পক্ষের / কাস্টম বাস্তবায়নে "LIBRARY = 'লাইব্রেরি" যুক্ত / ব্যবহার করতে হবে তার একটি উদাহরণ দিতে পারেন।
কৃষ্ণ ইজ্জদা

আসল সময়ে এটি কীভাবে ব্যবহার করতে হবে তার মৌলিক উদাহরণ পেতে অপেক্ষা করছি।
কৃষ্ণ ইজ্জদা 8'17

@ কৃষাতি 95 Dদেব আমার আপডেট হওয়া উত্তরটি দেখুন
রাফেল

1

আপনি যেখানে মূল ফাইলটি ব্যবহার করেছেন সেখান থেকে উল্লেখ করতে পারেন .এই উদাহরণটি এটি আপনাকে সহায়তা করতে পারে, আপনি নাম রাখতে হবে যা আপনি অন্তর্ভুক্ত করতে চান: -

কম্পোনেন্টরেজিস্টার :: রেজিস্টার (কম্পোনেন্টআরজিস্টার :: লাইব্রেরি, '', ডিআইআর );

উদাহরণ:

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LIBRARY,
    'magento/test',
    __DIR__ );

0

আমি কাজ করার জন্য /magento//a/163418/36759 উত্তরটি পেতে পারি তবে লাইব্রেরির ক্লাসগুলির মধ্যে নেমস্পেসগুলি ঘোষণার পরে, তাই এটি মনে রাখবেন।


0

ম্যাজেন্টো ২.২ থেকে বর্ণিত অর্ধ-ডকুমেন্টেড লাইব্রেরি পদ্ধতির আর কাজ হয় না। Magento বিকাশকারীদের অনুসারে সুরকার ব্যবহার করে লাইব্রেরি যুক্ত করতে উত্সাহিত করে:

https://github.com/magento/magento2/issues/10985

কী কাজ করে তা আপনার নিজস্ব অটোলোডার যুক্ত করবে: lib/internal/Your/Library/registration.php

<?php
namespace Your\Library;

spl_autoload_register(function ($class) {
  $prefix   = __NAMESPACE__ . '\\';
  $base_dir = __DIR__.'/';
  $len = strlen($prefix);

  if (strncmp($prefix, $class, $len) !== 0) {
    return;
  }
  $relative_class = substr($class, $len);
  $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
  if (file_exists($file)) {
    require $file;
  }
});

এটি app/etc/NonComposerComponentRegistration.phpএখনও নিম্নলিখিত ডিরেক্টরি অন্তর্ভুক্ত যার কারণে কাজ করে :

$pathList[] = dirname(dirname(__DIR__)) . '/lib/internal/*/*/registration.php';
$pathList[] = dirname(dirname(__DIR__)) . '/lib/internal/*/*/*/registration.php';
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.