организация — лучший способ установить общую переменную между проектами в PHP?

У меня есть несколько проектов на моем хосте. У них много общего, и я хочу, чтобы они использовали общие 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 приписывать.

1

Решение

Как насчет определения констант? Это весьма полезно для определения глобальных опций, и вы вообще не загрязняете глобальную область.

define('NODE_MODULES_DIR', '../node_modules/');

а затем позже использовать его там:

<script src="<?= NODE_MODULES_DIR ?>jquery/dist/jquery.min.js"></script>

Я не знаю о «лучшем» решении.

0

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

Хранение конфигурации вне вашего кода — это путь. Вы помещаете все свои строки подключения, pwds и т. Д. В файл конфигурации, как предложено Приложение с двенадцатью факторами.

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

phpdotenv предоставляет эти возможности красиво.

0

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