
Не используйте env() вне файлов конфигурации
На форумах по Laravel я часто вижу несколько однотипных вопросов, связанных с использованием функции env()
.
Звучат они примерно так:
.env иногда не читает переменные
env()/getenv() иногда не инициализированы
я изменил имя базы данных в .env-файле, но ничего не произошло
Возможно, это случалось и с вами. Надеюсь, к концу этого поста вы будете знать, почему так происходит и как этого избежать.
Кэширование конфигурации
На странице документации по развертыванию Laravel упоминается оптимизация загрузки конфигурации, и если вы будете следовать этой документации, то, скорее всего, выполните следующую команду при развертывании сайта на продакшене:
Вы можете спросить, какое отношение это имеет к функции env()
?
Когда вы кэшируете конфигурацию, Laravel объединяет все ваши конфигурационные файлы в один для повышения производительности, но еще один эффект, который дает эта команда, заключается в том, что Laravel перестает читать ваш файл .env
. Это означает, что функция env()
не будет возвращать значения, которые вы указали в файле .env
.
Отказываемся от .env файла
Означает ли это, что вам следует вообще отказаться от использования файла .env
?
Нет, это означает только то, что вам следует прекратить использовать функцию env()
в вашем коде и вместо этого использовать ее только в файлах конфигурации.
Вместо того чтобы делать что-то вроде:
Вам следует поступать так:
А затем просто добавить вызов env()
в свой конфигурационный файл:
Теперь все должно работать так, как и ожидалось.
Файл .env в продакшене
Что делать, если вы захотите изменить файл .env
в проде?
В этом случае вы можете запустить команду cache
снова после изменения файла:
Если по какой-то причине вам нужно удалить кэш, вы можете сделать это с помощью следующей команды:
Источник: You should never use env() outside of your config files.

PHP-фреймворк Tempest
Tempest – PHP MVC микро-фреймворк, который не мешает вам работать.

Совместимость WordPress 6.4 с PHP
Стремясь держать сообщество WordPress в курсе событий, в этой заметке мы приводим обновленную информацию о совместимости с PHP предстоящего выпуска WordPress 6.4, запланированного на 7 ноября 2023 года.

Как добавить свою вкладку в настройки WooCommerce
По работе я провожу значительную часть времени за аудитом сторонних расширений. Одним из удивительных моментов в процессе аудита является наблюдение за тем, куда разработчики помещают свои настройки.

Программное расширение robots.txt, созданного в Yoast SEO
В новых версиях плагина Yoast SEO присутствует неприятная ошибка, которая делает виртуальный robots.txt невалидным.

Нормализация composer.json
Если вы, как и я, любите порядок во всём, то могу порекомендовать пакет composer-normalize, который помогает поддерживать ключи composer.json в соответствии со схемой schema.json.

WP All Import: Атрибуты на русском языке в запросах XPath
XPath не позволяет делать запросы на кириллице вида {param[@name="Руль"]}
, но мы попробуем обойти это ограничение.

Поиск по произвольным полям WordPress без плагина
Пользовательские произвольные поля — это одна из самых мощных функций, доступных в WordPress.

Как переопределять РНР классы через Composer
В этом руководстве мы рассмотрим, как переопределять классы с помощью Composer.

Использование yield в провайдерах данных PHPUnit
Изначально я хотел написать общий пост о PHP генераторах, функции, появившейся в PHP 5.5.

Ошибка «Constant CONSTANT_NAME Already Defined» в PHPUnit
Если вы используете PHPUnit для запуска множества тестов, каждый из которых определяет константы, то вы можете столкнуться с ошибкой «Constant CONSTANT_NAME Already Defined» при попытке запустить их вместе.

Отличие composer install от composer update
В одном из чатов поддержки WordPress прозвучал простой, на первый взгляд, вопрос: «В чем отличие команды composer install
от команды composer update
«, на который я постараюсь ответить как можно подробнее.

TailPress — быстрое создание темы WordPress с помощью Tailwind CSS
TailPress — это ваша отправная точка для разработки тем под WordPress с помощью Tailwind CSS. Поставляется с поддержкой редактора блоков Gutenberg из коробки.

Как использовать InnerBlocks в блоках ACF
Моя любимая новая функция в Advanced Custom Fields 5.9 — поддержка InnerBlocks. Это позволяет вам вставлять любой блок (из ядра или пользовательский) внутрь блока ACF.

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

Статический анализатор кода Psalm в WordPress
Статические анализаторы кода (PHPStan, Psalm, Phan) просто читают код и пытаются найти в нём ошибки.

Tabnine — искусственный интеллект для вашего PhpStorm
Tabnine (ранее Codota) — самый лучший плагин для автодополнения кода с привлечением искусственного интеллекта и нейросетей в PhpStorm.

Low Coupling и High Cohesion
Качественный дизайн обладает слабой связанностью (low coupling) и сильной связностью (high cohesion).

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

Расширение экрана «Здоровье сайта» в WordPress 5.8
В предстоящем релизе WordPress 5.8 запрос на расширение разработчиком экрана «Здоровье сайт» (Site Health), путём добавления вкладок со своим содержимым, выполнен (#47225).

Unit tests matter
Или Roadmap для Unit тестов на WordPress.

Лучшие практики для главного файла плагина
После жаркой дискуссии о том, как должен выглядеть главный файл плагина, внутри твита от Mark Jaquith, я решил написать свой вариант, с большинством пунктов я согласен, но об этом позже.

Состоянии гонки (Race condition) на примере счетчика
Состояние гонки или опасность гонки — это состояние электроники, программного обеспечения или другой системы, в котором основное поведение системы зависит от последовательности или времени других неконтролируемых событий.

UI тесты для WordPress (Codeception + WP Browser)
UI (E2E, GUI) тесты полностью эмулируют поведение пользователей в браузере. Данные тесты относятся к приемочному (acceptance) виду тестирования.

Замена конструкций exit/die в unit-тестах
Если в коде вы используете die/exit то PHPUnit прекратит свою работу в этот момент. Для этого нам нужно заменить конструкцию exit
или die
. Но это сделать сложно т.к. Functions Mocker с этим не справляется.

Чудо Mockery для заглушек в unit тестах
Потрясающая библиотека Mockery, которая сделает вашу жизнь лучше во время написания тестов.

Модульное тестирование WordPress с помощью Brain Monkey
Кто еще не знаком с тестированием и модульным тестированием можете ознакомится: Автоматизация тестирования, Модульное тестирование с помощью PHPUnit.

Как с помощью husky улучшить качество работы с Git?
Библиотека husky может предотвращать плохие git commit
, git push
и еще что-то).