Доступные DI

    Доступные DI

    В Evolution CMS используется несколько DI

    • Helper - предполагается что здесь будут различные вспомогательные функции. В данный момент здесь только phpthumb
    • UserManager - различные методы связанные с пользователями

    Как подменить DI на свою?

    Чтобы заменить одну DI на другую, нам нужно выполнить несколько шагов 1) Создать класс реализующий аналогичный функционал. Можно изменить частично унаследовав класс из исходной DI 2) Зарегистрировать свою зависимость через ServiceProvider. Пример регистрации

    <?php namespace EvolutionCMS\Custom;
    
    use EvolutionCMS\Custom\CustomUserManager;
    use EvolutionCMS\ServiceProvider;
    
    class CustomUserServiceProvider extends ServiceProvider
    {
        /**
         * Register the service provider.
         *
         * @return void
         */
        public function register()
        {
    
            //регистрируем свой CustomTemplateProcessor как TemplateProcessor
            $this->app->singleton('UserManager', function ($app) {
                return new CustomUserManager($app);
            });
        }
    }

    После этих действий все обращения сайта будут идти к классу CustomUserManager как к \UserManager из ядра.

    Зачем это может пригодится?

    Например в случае расширения пользователя. Мы можем создать дополнительную таблицу с атрибутами пользователя. После этого расширить методы отвечающие за сохранение/редактирование пользователей, чтобы оно сохраняло данные в новую таблицу и после этого в панели управления тоже будет всё сохранять, так как там используются методы из UserManager