API-First Laravel проекты
Я разрабатываю API на Laravel уже много лет, и одна вещь стала очевидна: способ, которым мы учим Laravel, не совпадает с тем, как мы его на самом деле используем.
Продвинутое использование Eloquent в Laravel
В этом руководстве мы углубимся в ORM (объектно-реляционное преобразование), который использует Laravel — Eloquent.
DDD: сравнение Laravel-data и Symfony Validator Object как DTO
Один из самых простых шагов при переходе приложения к кодовой базе Domain Driven Design — создание объектов передачи данных, или DTO для краткости.
Шаблоны проектирования в Laravel
Laravel — популярный PHP-фреймворк, известный своим элегантным синтаксисом и продвинутыми функциями. Помимо своих возможностей, Laravel сильно акцентирует внимание на шаблонах проектирования.
Zip-бомбы для защиты сервера
Сегодня бóльшую часть трафика в сети составляют боты. Они используются для обнаружения нового контента. Это читалки RSS-лент, поисковые системы, и боты искусственного интеллекта, которые обучают свои LLM.
21 ошибка программиста PHP
Эта серия статей предназначена для тех программистов на языке PHP, которые хотят избежать наиболее общих ошибок в написании кода.
Не используйте 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) на примере счетчика
Состояние гонки или опасность гонки — это состояние электроники, программного обеспечения или другой системы, в котором основное поведение системы зависит от последовательности или времени других неконтролируемых событий.

