#статьи
🛞 Как использовать Enums в Laravel 12
С выходом PHP 8.1 в язык пришли Enum'ы — перечисления, которые делают код чище, безопаснее и выразительнее. Laravel 12 полностью поддерживает Enums и превращает их в мощный инструмент валидации, кастов моделей и отображения данных.
Что дают Enums?
Надёжная типизация и защита от ошибок
Удобство в работе с методами (
Простое использование в Eloquent, Blade, API, валидации
Мощные кастомные методы и проверка переходов состояний
Enums становятся частью доменной логики, а не просто значениями.
В статье — примеры, практики, best practices и советы по производительности.
Medium
👉 Новости 👉 База вопросов
С выходом PHP 8.1 в язык пришли Enum'ы — перечисления, которые делают код чище, безопаснее и выразительнее. Laravel 12 полностью поддерживает Enums и превращает их в мощный инструмент валидации, кастов моделей и отображения данных.
Что дают Enums?
Надёжная типизация и защита от ошибок
Удобство в работе с методами (
label()
, color()
, isFinalized()
)Простое использование в Eloquent, Blade, API, валидации
Мощные кастомные методы и проверка переходов состояний
Enums становятся частью доменной логики, а не просто значениями.
В статье — примеры, практики, best practices и советы по производительности.
Medium
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤓 RoadRunner — высокопроизводительный application server на Go. Этот проект заменяет связку Nginx+PHP-FPM, позволяя запускать PSR-7-совместимые приложения с поддержкой HTTP/3, WebSockets и даже Temporal workflow.
Конфигурация через
Гитхаб
👉 Новости 👉 База вопросов
Конфигурация через
.rr.yaml
напоминает docker-compose: можно подключать очереди, кеш и метрики как плагины. Рабочие процессы PHP остаются в памяти, что даёт до 10x прирост скорости против традиционного FPM. Особенно радует встроенная система мониторинга и автоматические рестарты упавших воркеров. Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Laravel
🤔 Как определить переменные окружения в Laravel?
B Laravel переменные окружения определяются в файле
👉 Новости 👉 База вопросов
B Laravel переменные окружения определяются в файле
.env
, который находится в корне проекта. При установке Laravel создается файл - env. example
, который копируется и переименовывается в .env
. В этом файле настраиваются ключевые параметры, такие как подключение к базе данных, настройки почты и другие важные параметры, например, APP_ENV
, D_HOST
, DB_PORT
и другие.Please open Telegram to view this post
VIEW IN TELEGRAM
#статьи
😊 Интегрируем внешние данные из нескольких источников с помощью DTO
Смотри тут
👉 Новости 👉 База вопросов
Смотри тут
Please open Telegram to view this post
VIEW IN TELEGRAM
Lucky Media
How to Integrate multiple external data sources in Laravel with DTOs - Lucky Media
For over a decade, Lucky Media has been a leading Software Development Agency in the US, based in Dallas, TX. We build custom software solutions for your business.
Please open Telegram to view this post
VIEW IN TELEGRAM
#ЛитКод
Задача: 774. Minimize Max Distance to Gas Station
Вам дан массив целых чисел stations, который представляет позиции автозаправочных станций на оси x. Вам также дано целое число k.
Вы должны добавить k новых автозаправочных станций. Вы можете добавлять станции в любое место на оси x, необязательно в целочисленную позицию.
Определим penalty() как максимальное расстояние между соседними автозаправочными станциями после добавления k новых станций.
Верните наименьшее возможное значение penalty(). Ответы, отличающиеся от фактического ответа не более чем на 10^-6, будут приняты.
Пример:
👨💻 Алгоритм:
1⃣ Пусть i-й интервал равен deltas[i] = stations[i+1] - stations[i]. Мы хотим найти dp[n+1][k] как рекурсию. Мы можем поставить x автозаправочных станций в интервал n+1 с наилучшим расстоянием deltas[n+1] / (x+1), затем оставшиеся интервалы можно решить с ответом dp[n][k-x]. Ответ — это минимум среди всех x.
2⃣ Из этой рекурсии мы можем разработать решение с использованием динамического программирования. Инициализируем двумерный массив dp, где dp[i][j] будет хранить минимальное возможное значение penalty при добавлении j автозаправочных станций на первые i интервалов.
3⃣ Заполняем dp таблицу начиная с базового случая, когда нет добавленных станций. Затем для каждого интервала и количества добавленных станций вычисляем минимальное значение penalty, используя вышеописанную рекурсию. Итоговый ответ будет находиться в dp[n][k], где n — количество интервалов, а k — количество добавляемых станций.
😎 Решение:
👉 Новости 👉 База вопросов
Задача: 774. Minimize Max Distance to Gas Station
Вам дан массив целых чисел stations, который представляет позиции автозаправочных станций на оси x. Вам также дано целое число k.
Вы должны добавить k новых автозаправочных станций. Вы можете добавлять станции в любое место на оси x, необязательно в целочисленную позицию.
Определим penalty() как максимальное расстояние между соседними автозаправочными станциями после добавления k новых станций.
Верните наименьшее возможное значение penalty(). Ответы, отличающиеся от фактического ответа не более чем на 10^-6, будут приняты.
Пример:
Input: stations = [1,2,3,4,5,6,7,8,9,10], k = 9
Output: 0.50000
class Solution {
function minmaxGasDist($stations, $K) {
$N = count($stations);
$deltas = array_fill(0, $N-1, 0);
for ($i = 0; $i < $N-1; ++$i)
$deltas[$i] = $stations[$i+1] - $stations[$i];
$dp = array_fill(0, $N-1, array_fill(0, $K+1, 0));
for ($i = 0; $i <= $K; ++$i)
$dp[0][$i] = $deltas[0] / ($i+1);
for ($p = 1; $p < $N-1; ++$p)
for ($k = 0; $k <= $K; ++$k) {
$bns = 999999999;
for ($x = 0; $x <= $k; ++$x)
$bns = min($bns, max($deltas[$p] / ($x+1), $dp[$p-1][$k-$x]));
$dp[$p][$k] = $bns;
}
return $dp[$N-2][$K];
}
}
Please open Telegram to view this post
VIEW IN TELEGRAM
LeetCode
Minimize Max Distance to Gas Station - LeetCode
Can you solve this real interview question? Minimize Max Distance to Gas Station - Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
#Собес #Laravel
🤔 Что такое внедрение зависимостей в РНР- фреймворках?
Внедрение зависимостей - это паттерн проектирования, при котором объект получает свои зависимости (например, другие объекты) извне, а не создает их внутри себя. Это снижает зависимость классов друг от друга, улучшая тестируемость и поддерживаемость кода. В РНР фреймворках это реализуется через контейнеры зависимостей, которые управляют созданием и жизненным циклом объектов.
👉 Новости 👉 База вопросов
Внедрение зависимостей - это паттерн проектирования, при котором объект получает свои зависимости (например, другие объекты) извне, а не создает их внутри себя. Это снижает зависимость классов друг от друга, улучшая тестируемость и поддерживаемость кода. В РНР фреймворках это реализуется через контейнеры зависимостей, которые управляют созданием и жизненным циклом объектов.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😇 Совет по Laravel.
Защитите ваше приложение от спамеров при регистрации.
Побочный эффект: если вы отправляете электронные письма при регистрации, это поможет избежать переполнения очереди email-уведомлений и лишних расходов на услуги почтового провайдера.
После достижения лимита пользователи/боты будут получать ошибку "429 Too Many Requests"
👉 Новости 👉 База вопросов
Защитите ваше приложение от спамеров при регистрации.
Побочный эффект: если вы отправляете электронные письма при регистрации, это поможет избежать переполнения очереди email-уведомлений и лишних расходов на услуги почтового провайдера.
После достижения лимита пользователи/боты будут получать ошибку "429 Too Many Requests"
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
👍 Reli — профилировщик выборки или памяти
Это профилировщик, написанный на PHP, который считывает информацию о запуске виртуальной машины PHP извне процесса. Вы можете обнаружить узкие места производительности или утечки памяти в своих скриптах, не меняя целевой скрипт и не загружая расширения.
Гитхаб
👉 Новости 👉 База вопросов
Это профилировщик, написанный на PHP, который считывает информацию о запуске виртуальной машины PHP извне процесса. Вы можете обнаружить узкие места производительности или утечки памяти в своих скриптах, не меняя целевой скрипт и не загружая расширения.
Гитхаб
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Laravel
🤔 Что такое middleware в контексте Laravel?
Middleware в Laravel - это фильтры, которые перехватывают НТТР-запросы и ответы, добавляя кросс-сквозную логику. Они используются для задач, таких как проверка аутентификации, логирование, управление CORS или ограничение доступа. Middleware обрабатывает запрос до или после его передачи в контроллер, обеспечивая модульность и чистоту основной логики приложения.
👉 Новости 👉 База вопросов
Middleware в Laravel - это фильтры, которые перехватывают НТТР-запросы и ответы, добавляя кросс-сквозную логику. Они используются для задач, таких как проверка аутентификации, логирование, управление CORS или ограничение доступа. Middleware обрабатывает запрос до или после его передачи в контроллер, обеспечивая модульность и чистоту основной логики приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😵💫 Будущее PHP: Свежий взгляд на то, что принесет PHP 9.0
PHP выходит на новый уровень строгости и чистоты кода. Вот самые важные изменения:
🟠 Инкременты и декремент
Теперь `'a9'++ вызовет TypeError вместо странного поведения.
🟠 Ошибки при
Любая проблема при десериализации выбросит
🟠 Запрет на
Больше нельзя делать
🟠 Упрощение интерполяции строк
Старый синтаксис
🟠 Предупреждения = Фатальные ошибки
Обращение к несуществующей переменной сразу остановит выполнение скрипта.
🟠 Удаление устаревших функций
Если видите депрекейшн-ворнинги — обязательно исправляйте.
Что можно делать уже сейчас:
Уберите все предупреждения из кода.
Настройте строгую типизацию и обработку ошибок.
Medium
👉 Новости 👉 База вопросов
PHP выходит на новый уровень строгости и чистоты кода. Вот самые важные изменения:
Теперь `'a9'++ вызовет TypeError вместо странного поведения.
unserialize()
Любая проблема при десериализации выбросит
UnserializationFailedException
.false
как массивБольше нельзя делать
$arr[] = 2;
, если $arr = false;
.Старый синтаксис
${}
будет удалён. Останется только $name
в строках.Обращение к несуществующей переменной сразу остановит выполнение скрипта.
Если видите депрекейшн-ворнинги — обязательно исправляйте.
Что можно делать уже сейчас:
Уберите все предупреждения из кода.
Настройте строгую типизацию и обработку ошибок.
Medium
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🏠 Нашёл годный пакет Laravel
gecche/laravel-multidomain: для использования Laravel-приложения в многодоменной конфигурации
https://github.com/gecche/laravel-multidomain
Этот пакет предоставляет очень простой способ получить отдельный
👉 Новости 👉 База вопросов
gecche/laravel-multidomain: для использования Laravel-приложения в многодоменной конфигурации
https://github.com/gecche/laravel-multidomain
Этот пакет предоставляет очень простой способ получить отдельный
.env
-файл, отдельный путь к хранилищу и отдельную базу данных для каждого такого клиента.Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🫡 Разработчики, возьмите на заметку: чему нас могут научить хакеры при ревью PHP-кода
Вот на что часто обращают внимание хакеры при ревью PHP-кода —
Этот простой паттерн помогает находить уязвимости типа SQL-инъекция буквально за минуты. Такие конструкции часто встречаются в небезопасных реализациях, особенно без параметризации запросов
Попробуйте сами: поищите это выражение в open-source проектах на GitHub — многие уязвимости видны сразу
Безопасный код — это ваш лучший контрприём
👉 Новости 👉 База вопросов
Вот на что часто обращают внимание хакеры при ревью PHP-кода —
$this->db->query
Этот простой паттерн помогает находить уязвимости типа SQL-инъекция буквально за минуты. Такие конструкции часто встречаются в небезопасных реализациях, особенно без параметризации запросов
Попробуйте сами: поищите это выражение в open-source проектах на GitHub — многие уязвимости видны сразу
Безопасный код — это ваш лучший контрприём
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#Собес #Laravel
🤔 Какова архитектура Laravel?
Laravel построен на архитектуре MVC, где Model отвечает за данные и бизнес- логику, View за отображение интерфейса, а Controller за обработку запросов. Laravel дополняет эту структуру инструментами, такими как маршрутизация, ORM Eloquent, Blade-шаблоны и Artisan для автоматизации задач. Такая архитектура обеспечивает модульность, масштабируемость и удобство разработки.
👉 Новости 👉 База вопросов
Laravel построен на архитектуре MVC, где Model отвечает за данные и бизнес- логику, View за отображение интерфейса, а Controller за обработку запросов. Laravel дополняет эту структуру инструментами, такими как маршрутизация, ORM Eloquent, Blade-шаблоны и Artisan для автоматизации задач. Такая архитектура обеспечивает модульность, масштабируемость и удобство разработки.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
🤯 Совет по PHP
Функция
Документация
👉 Новости 👉 База вопросов
Функция
parse_url()
вернёт части URL, например, имя домена, если указать PHP_URL_HOST
.Документация
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#полезное
😱 Метод «json»
Если вы используете Laravel 10 и выше, есть элегантный способ чтения JSON-файлов с помощью
👉 Новости 👉 База вопросов
Если вы используете Laravel 10 и выше, есть элегантный способ чтения JSON-файлов с помощью
File::json()
. Вы также можете передать флаги, которые вы обычно передаете в json_decode()
, на случай, если вы хотите выбросить исключение Please open Telegram to view this post
VIEW IN TELEGRAM