PHPackages                             neznaika0/codeigniter-enhanced-config - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. neznaika0/codeigniter-enhanced-config

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

neznaika0/codeigniter-enhanced-config
=====================================

Advanced features configuration settings

1.0(3mo ago)10MITPHPPHP ^8.2

Since Apr 8Pushed 3mo ago1 watchersCompare

[ Source](https://github.com/neznaika0/codeigniter-enhanced-config)[ Packagist](https://packagist.org/packages/neznaika0/codeigniter-enhanced-config)[ RSS](/packages/neznaika0-codeigniter-enhanced-config/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (1)Dependencies (7)Versions (2)Used By (0)

Улучшенный конфигуратор для CodeIgniter 4
=========================================

[](#улучшенный-конфигуратор-для-codeigniter-4)

Установка
---------

[](#установка)

```
composer require neznaika0/codeigniter-enhanced-config
```

Проблема
--------

[](#проблема)

В настоящее время, версия CodeIgniter 4.7.х не поддерживает гибкие настройки конфигурационных классов. Особенную боль вызывает работа с массивами: для настройки через **.env** требуется заранее установить допустимые значения; через [Registrars](https://codeigniter4.github.io/CodeIgniter4/general/configuration.html#registrars) нельзя удалить ключи или изменить порядок.

Есть несколько способов настройки вашего проекта:

- Выполнить все изменения прямо в рабочем каталоге **app/Config/**, это рекомендованный способ. Но при обновлении фреймворка вам предстоит повторно проверить и восстановить ваши значения.
- Создать **Config/Registrar.php** в рабочем каталоге или модуле имеет больше возможностей. Можно применить различные функции для динамической настройки. Но всё ещё имеется ограничение для массивов.
- Файл **.env** позволяет частично редактировать только уже известные ключи массива.
- Для модулей применить вариант с `Publisher`. Обновятся классы путём замены кода с помощью регулярных выражений. Минус такого подхода - никогда не знаешь как повлияет замена, если файл отличается от оригинального из фреймворка.
- Для особенных случаев возможно создать собственный обработчик, добавив `ReflectionClass`.

Решение
-------

[](#решение)

Если я не ошибаюсь, всё что нам нужно, это получить текущее значение конфига при работе с `Registrar`. Официальный патч не рекомендован для CodeIgniter, так как может нарушить безопасность. В частности разработчики модулей смогут взаимодействовать с данными из конфигурации.

Для меня нет причин бояться этого. Поэтому создал пакет для всех желающих попробовать.

Использование
-------------

[](#использование)

В общем и целом, логика почти не поменялась:

1. Добавьте в желаемые конфигурационные классы трейт:

```
