Як користуватися ComponentRegistrar :: БІБЛІОТЕКА в Magento 2


15

У Magento 2 у нас є 4 типи компонентів, оскільки я використовував три з них, але моє питання полягає в тому, як використовувати const LIBRARY = 'library';компонент.

Як випливає з назви, до цього слід включити сторонні бібліотеки, але будь-яка може надати мені приклад того, як включити бібліотеку та використовувати lib на глобальному рівні програми.

/**#@+
* 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папкою


Дякую @Raphael, будь ласка, наведіть мені приклад того, як використовувати / завантажувати ці бібліотеки, додані "БІБЛІОТЕКА =" бібліотека "в сторонніх / користувацьких реалізаціях.
Krishna ijjada

Я з нетерпінням чекаю базового прикладу, як це використовувати в режимі реального часу.
Krishna ijjada

@ Krishati95Dev дивіться мою оновлену відповідь
Рафаель у Digital Pianism

1

Ви можете посилатися з основного файлу, де він використовується. Ось приклад, який може вам допомогти. Вам потрібно вказати ім'я, яке ви хочете включити: -

ComponentRegistrar :: регістр (ComponentRegistrar :: БІБЛІОТЕКА, '', DIR );

Приклад:

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

0

Я міг би отримати відповідь /magento//a/163418/36759 для роботи, але лише після оголошення просторів імен усередині класів у бібліотеці, тож пам’ятайте про це.


0

Описаний напівдокументований бібліотечний підхід із Magento 2.2 вже не працює. Magento закликає розробників додавати бібліотеки з використанням композитора відповідно до:

https://github.com/magento/magento2/isissue/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';
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.