MODx и composer Как скрестить?

Dec 7, 2016

Возник вопрос почему никто этим не занялся и не написал плагин или туториал? Просмотрел весь Интернет есть два плагина но самый свежий 2-х летней давности. Это же непорядок) Вариант который я знаю (пробовал на Битрикс) просто подключить автолоадер в index.php. Если кто делал и получилось поделитесь. П.С. Также смотрел MODx 3 ветку там он есть.

Как я это сделал и что это мне дало
  1. В папке сайта запускаем в консоли и на все вопросы жмем enter:
composer init
  1. в index.php строчка 48 после инитиализации МОДх
require_once __DIR__ . '/core/vendor/autoload.php';
  1. Редактируем composer.json
{
    "name": "aleks/modx_test",
    "config": {
        "vendor-dir": "core/vendor"
    },
    "autoload": {
        "psr-4": {
            "": "core/components"
        }
    }
}

В config мы указали чтоб vendor был бы в core папке так как его надо кидать в папку недоступной публично. Autoload указали папку для авто загрузки теперь например если мы создали компонент doodles в папке components (/core/components/doodles) и добавили туда класс Hello

//  /core/components/doodles/Hello.php
<?php
namespace Doodles;

class Hello {
    public static function hi(): string {
        return "Hi";
    }
}

то в сниппете мы его уже сможем вызвать таким образом

<?php
return Doodles\Hello::hi();

Это мне дало возможность использовать любые пакеты с https://packagist.org/ и интегрировать их в компоненты.