#php
#php
Вопрос:
Я хочу обновить пути к файлам модели / контроллеров или, если на то пошло, даже базовые about.php к чему-то без расширения .php, например, примерно/, в исходном коде, на основе сред.
Почему? Не хочу раскрывать фактические пути и переменные для обеспечения безопасности.
Например:
Когда я вызываю контроллер delete_user в среде разработки, в настоящее время тег href
in <a>
указывает на delete_user.php
передачу идентификатора пользователя в качестве переменной GET. Затем есть контроллер, который запускает SQL-запрос на УДАЛЕНИЕ и перенаправляет обратно на вызывающую страницу.
<a href="delete_user.php?delete_user_id=<?= $row['user_id'] ?>" class="table-action table-action-delete" data-toggle="tooltip" data-original-title="Delete">
</a>
В производственной среде я хочу, чтобы href
вместо этого было как delete-user/user-id
.
Теперь пути к файлам href должны быть обновлены и беспрепятственно интерпретироваться в разных средах.
<a href="delete-user/<?= $row['user_id'] ?>" class="table-action table-action-delete" data-toggle="tooltip" data-original-title="Delete">
</a>
Среда: NGINX, PHP7.4 (LEMP)
Какой наилучший и масштабируемый способ достичь этого в PHP?
Комментарии:
1. Для этого вы можете использовать jenkins, в PhP нет решения
Ответ №1:
На вашем месте я бы рассмотрел три способа :
Первый предполагает, что вы можете поддерживать пользовательский объект под названием ApplicationLinksConfiguration map для вашего различного env.
Свойства :
$configKey
: универсальный ключ в виде текста или целого числа, как вы предпочитаете$testValue
: значение для шага тестирования env$stagingValue
: значение для промежуточного шага env$prodValue
: значение для конечного шага prod env
И любые другие необходимые шаги.
Конечно, вы можете добавить установщики и получатели и пользовательский конструктор для создания объекта.
Конечно, вы можете добавить заводскую систему или любой шаблон проектирования builder, чтобы упростить управление ссылками в качестве системы конфигурации.
Второй способ рассмотреть это то, что вы можете использовать свою систему построения ссылок Framework, если таковая имеется. В качестве примера, когда вы используете Zend Framework
or Laminas
, которая является последней версией того же фреймворка, есть несколько помощников просмотра, которые отвечают за создание ваших ссылок во всех ваших веб-приложениях.
Конечно, существует множество помощников по просмотру, но помощник по просмотру URL может показать вам много преимуществ в повседневной работе. Для статических ресурсов также есть помощник по просмотру ресурсов.
Итак, поскольку внутри этой платформы управляются разные статусы приложений, вы можете реализовать свои, следуя директивам, указанным в официальной документации, особенно в этом разделе и в следующем.
Теперь вы можете создать пользовательский ApplicationLinksConfiguration
менеджер, который поддерживает режим приложения, и написать пользовательскую среду с вашими пользовательскими правилами для создания ваших ссылок следующим образом: одна среда, одно пользовательское правило. Или одно кольцо для hrefs, одно кольцо для создания всех ваших hrefs.
И последний способ — определить пользовательские маршруты для конкретной среды и / или пользовательских потребностей. Laminas
для этого тоже очень удобно.
Хорошего дня.
Ответ №2:
Вы можете добавить переменные среды в свои настройки php-fmp и прочитать их в своем коде. Это будет зависеть от настроек вашего сервера, поэтому вы можете погуглить, что вам нужно.
https://www.digitalocean.com/community/questions/setting-environment-variables-in-php-fpm
Затем в вашем php у вас есть доступ к этим переменным либо с помощью $_ENV
, либо getenv()
https://www.php.net/manual/en/reserved.variables.environment.php
https://www.php.net/manual/en/function.getenv.php
в качестве альтернативы, в $_SERVER
переменной может быть какое-то поле, которое может выполнять то, что вам нужно, но оно будет специфичным для вашей настройки, поэтому вам нужно var_dump($_SERVER)
в вашей среде разработки и в вашей среде prod найти поле, которое может работать для вас.
Комментарии:
1. Да, я подумал о подобном подходе к ведению файла переменных .. и считыванию значений из этого файла. Файл будет настраиваемым для каждой среды. $_SERVER также является хорошим способом. В настоящее время я использую его в некоторой степени.