Плагин —> подключение внешних php библиотек и загрузчиков классов

Здравствуйте!
Помогите, пожалуйста, в следующих вопросах (версия движка 1.0.3):

1. В плагине требуется задействовать некоторые зависимости, полученные с помощью Composer.
В каком месте плагина их правильно подключать?
Подключение в главном классе плагина, в методе Init() — верное решение? Если нет, то подскажите правильный путь, пожалуйста?

Файл plugin_name.class.php
...
// Инициализация плагина
public function Init() {
    require 'vendor/autoload.php';
}
...


2. В плагине требуется задействовать некоторые свои библиотечные классы, хранящиеся в папке
lib/

Как правильно подключать свои либы к плагину? Можно ли через автозагрузчик классов? Если да, то где почитать про правила автозагрузки классов в LS?

Большое спасибо за помощь и ответы!

7 комментариев

avatar
Автозагрузка в 1.0.3 работает только для классов ЛС.
В большинстве случаев подключение композера в Init() плагина должно прокатить.
В версии 2.0 уже есть поддержка PSR-0 (указывает на каталог /framework/libs/vendor/ ) и PSR-4
Вот пример LS проекта, использующего composer — github.com/livestreet/developers.livestreetcms.com
  • ort
  • +2
avatar
Спасибо за ответ!
С Композером — работает, проверил.
Со своими либами — только через require в Init() плагина, правильно?

//спасибо!
avatar
Дополню коммент выше:

Подключение в главном классе плагина, в методе Init() — верное решение?
Можно и так
Как правильно подключать свои либы к плагину?
Можно создать файл в каталоге
/include/
относительно корня папки плагина и сделать подключение в нем, а саму библиотеку разместить где угодно. Преимущество данного метода, что весь конфиг плагина к этому моменту уже будет загружен и доступен (в случае необходимости).
avatar
Т.е., из папки
/plugin_name/include/
будет автоматическая подгрузка?

// спасибо за ответ и дополнения!
avatar
будет автоматическая подгрузка?
да, но не в подкаталогах:
/plugin_name/include/lib.php - подключит
/plugin_name/include/vendor/somelib/somelib.php - не подключит, для неё нужна обертка вида /plugin_name/include/file.php, которая сделает require на либу

я тут ошибся:
Преимущество данного метода, что весь конфиг плагина к этому моменту уже будет загружен и доступен (в случае необходимости).
это выполняется, но не «преимущество» т.к. в Инит() главного класса плагина тоже конфиг доступен.
avatar
Отлично, спасибо!
avatar
Всем большое спасибо за помощь и советы! Вопрос решен :-)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.