У меня есть несколько проектов на моем хосте. У них много общего, и я хочу, чтобы они использовали общие node_modules. Моя структура папок выглядит примерно так:
_CONFIG.php
node_modules/
project1/
index.php
project2/
index.php
project3/
index.php
Во всех моих файлах index.php я require_once '../_CONFIG.php'
где я установил:
$node_modules = '../node_modules/';
Затем в каждом проекте, когда мне нужно использовать модуль Node, у меня есть:
<script src="<?= $node_modules; ?>jquery/dist/jquery.min.js"></script>
Я делаю это, потому что мне может понадобиться изменить путь к node_modules. Если бы все было жестко закодировано, у меня было бы тяжелое время. Допустим, я установил обновленные node_modules и хочу сделать резервную копию. Я хочу иметь возможность быстро переключаться между старым и новым модулями на случай, если некоторые из новых будут несовместимы с одним из моих проектов.
У меня есть другие общие черты между проектами, которые я хочу легко настроить через файл _CONFIG.php.
Я знаю, что загрязнять глобальный охват не очень хорошая вещь, и это именно то, что я делаю. Есть лучший способ сделать это? В то же время я не хочу делать кучу вещей только для вывода строки в теге скрипта src
приписывать.
Как насчет определения констант? Это весьма полезно для определения глобальных опций, и вы вообще не загрязняете глобальную область.
define('NODE_MODULES_DIR', '../node_modules/');
а затем позже использовать его там:
<script src="<?= NODE_MODULES_DIR ?>jquery/dist/jquery.min.js"></script>
Я не знаю о «лучшем» решении.
Хранение конфигурации вне вашего кода — это путь. Вы помещаете все свои строки подключения, pwds и т. Д. В файл конфигурации, как предложено Приложение с двенадцатью факторами.
Вместо использования глобальных переменных вы можете добавить один уровень косвенности, используя функцию-обертку, которая возвращает значения на основе заданной ключевой строки.
phpdotenv предоставляет эти возможности красиво.