承接 neznaika0/codeigniter-enhanced-config 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

neznaika0/codeigniter-enhanced-config

最新稳定版本:1.0

Composer 安装命令:

composer require neznaika0/codeigniter-enhanced-config

包简介

Advanced features configuration settings

README 文档

README

Установка

composer require neznaika0/codeigniter-enhanced-config

Проблема

В настоящее время, версия CodeIgniter 4.7.х не поддерживает гибкие настройки конфигурационных классов. Особенную боль вызывает работа с массивами: для настройки через .env требуется заранее установить допустимые значения; через Registrars нельзя удалить ключи или изменить порядок.

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

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

Решение

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

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

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

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

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

namespace Config;

use CodeIgniter\Config\BaseConfig;
use Neznaika0\CodeIgniterEnhancedConfig\EnhancedRegistrarTrait;

class App extends BaseConfig
{
    use EnhancedRegistrarTrait;
  1. Создайте файл app/Config/Registrar.php или в директории модуля module_dir/Config/Registrar.php.
  2. Добавьте новые значения используя текущие параметры из $currentProperties:
class Registrar
{
    /**
     * @param array<string, mixed> $currentProperties
     *
     * @return array<string, mixed>
     */
    public static function App(array $currentProperties): array
    {
        // $currentProperties contains values from App
        return [
            'baseURL'          => 'http://domain.com:8080/',

            // Use the previous values
            'supportedLocales' => array_merge($currentProperties['supportedLocales'], ['ru']),

            // or replace it completely
            'supportedLocales' => ['ru', 'en', 'de'],
        ];
    }

Помните про важные особенности:

  • Значение после Registrar будет перезаписано из .env.
  • Не изменяйте типизацию свойств.
  • Не все классы расширяют BaseConfig.
  • Порядок вызова нескольких Registrar может быть разным.

Помощь

Если вы нашли ошибки или есть предложения по улучшению, можете отправить PR или открыть Проблему.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 4
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-04-08

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固