PHP правильный способ использовать константы с композитором

У меня есть библиотека PHP на packagist.org, которая использует некоторые константы, меняющиеся от проекта к проекту.

Я пытаюсь использовать такие константы:

  • Константы магазины в conf.php в библиотеке композитора

  • После композитор init имя пользователя / mylib команда, я делаю копию из /vendor/username/mylib/conf.php к местному /conf.php и использовать его для текущей конфигурации проекта

для проекта1, в /conf.php

define("HOST", "host1.com");

проект2, в /conf.php

define("HOST", "host2.com");

Но это выглядит как неправильный путь.

Как правильно использовать константы с библиотеками композитора?

0

Решение

Я предпочитаю делать это немного по-другому

в моей библиотеке я бы
/vendor/vendorname/pkg/config/system.php
/vendor/vendorname/pkg/config/local.sample.php

и предоставить инструкции для копирования

/vendor/vendorname/pkg/config/local.sample.php
в
/config/local.php

тогда в моем коде я бы что-то вроде

    $sysconffile = static::$vendorbasedir . '/config/system.php';
if (file_exists($sysconffile)) {
$sysconf = require $sysconffile;
} else {
throw new \RuntimeException('Sys Conf Missing!');
}

$localconf = [];
$localconfile = static::$appbasedir . '/config/local.php';
if (file_exists($localconfile)) {
$localconf = require $localconfile;
}

ОБНОВИТЬ:

Я также предпочитаю статические классы с данными, а не с определениями, так как определение очень свободно в документации, подсказках типов и перезаписи.

Поэтому, когда у меня есть оба конфига, я обычно делаю

static::$config = array_replace_recursive($sysconf, $localconf);
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector