Как включить мою пользовательскую библиотеку в Opencart 3 - PullRequest
3 голосов
/ 19 сентября 2019

Я хочу добавить пользовательскую библиотеку в свой магазин без добавления require операторов везде, где мне нужна эта библиотека.

Например, у меня есть следующий класс

class SuperLibrary {
   function someMethod() {

   }
}

Как можноЯ включаю его без изменения фреймворка?

1 Ответ

2 голосов
/ 19 сентября 2019

Насколько вы используете Opencart 3+, есть хорошие новости.Библиотеки автоматически загружаются, если настроены правильно.

Как мы можем найти в источниках Opencart.Используются функции автозагрузки:

spl_autoload_register('library');
spl_autoload_extensions('.php');

И сама функция library

function library($class)
{
    $file = DIR_SYSTEM . 'library/' . str_replace('\\', '/', strtolower($class)) . '.php';
    if (is_file($file)) {
        include_once(modification($file));

        return true;
    } else {
        return false;
    }
}

Итак, для загрузки вашей пользовательской библиотеки:

  1. Создать.php файл в <root>/system/library, в этом случае мы можем дать следующее имя - superlibrary.php

  2. Давайте рассмотрим, что наш библиотечный класс является одиночным.Итак, в нашем файле superlibrary.php давайте определим простой класс:

      class SuperLibrary
      {
           private static $inst;
           public static function getInstance()
           {
               static::$inst = null;
               if (static::$inst === null) {
                  static::$inst = new static();
               }
               return static::$inst;
           }
    
           private function __construct()
           {
           }
    
           public function someMethod() {
               var_dump("HELLO WORLD");
               exit;
           }
      }
    
  3. Далее, если вы попытаетесь сбросить загруженные классы, вы не найдете его в списке, потому что,мы не использовали его нигде в нашем коде.Давайте использовать его, например, на любом контроллере:

    $superLib = SuperLibrary::getInstance();
    $superLib->someMethod();
    
  4. Если все настроено правильно, вы должны увидеть вывод метода с дампами.

Надеюсь, это поможет.

...