Проверка через
strpos годами путала новичков:
if (strpos($url, 'https') !== false) {
// ...
}
Потому что совпадение в начале строки возвращает позицию
0, а 0 в PHP может трактоваться как false.С PHP 8.0 есть три функции, которые сразу возвращают `bool`:
str_contains($email, '@'); // содержит подстроку
str_starts_with($url, 'https://'); // начинается с
str_ends_with($file, '.pdf'); // заканчивается на
Код читается проще — без проверки позиции и
!== false.📌
strpos всё ещё нужен, если требуется узнать позицию совпадения.Please open Telegram to view this post
VIEW IN TELEGRAM
🥱4🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20👍3
А вы уже забрали свой подарок ко Дню программиста?
К вашему профессиональному празднику Tproger, Proglib, Столото, Центральный университет и SmartApe собрали целую коробку подарков. Переходите по ссылке, трясите коробку и забирайте свой презент: https://tprg.ru/ZX3b
Реклама. ИП Михайлишина Гузель Фаниловна, erid: 2W5zFJrVGHw
К вашему профессиональному празднику Tproger, Proglib, Столото, Центральный университет и SmartApe собрали целую коробку подарков. Переходите по ссылке, трясите коробку и забирайте свой презент: https://tprg.ru/ZX3b
Реклама. ИП Михайлишина Гузель Фаниловна, erid: 2W5zFJrVGHw
👍2🥱1
Было:
framework:
mailer:
dsn: '%env(MAILER_DSN)%’
Стало:
mailer:
dsn: '%env(MAILER_DSN)%’
Старый framework.* при этом продолжает работать — существующие проекты менять не нужно.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3👾2
Самые заметные изменения:
Можно зафиксировать часть аргументов функции:
$makeSlug = str_replace(' ', '-', ?);
$makeSlug('Hello World');
// Hello-World
Наконец отдельная функция для ограничения значения:
clamp(101, min: 0, max: 100);
// 100
Тип для представления длительности с наносекундной точностью:
$delay = Duration::fromMilliseconds(100)
->multiplyBy(2 ** $attempt);
public string $name = 'migration’;
И ещё: для новых установок PHP меняет defaults native sessions — strict_mode и HttpOnly включаются, а SameSite становится Lax.
📌 Feature freeze — 22 сентября, первый RC — 24 сентября.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍7🥱4
Плюс десятки фиксов для очередей, Redis, SQLite, Cloud, Artisan, routing и Eloquent.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🎉5🥱1
При сборке контейнера в debug-режиме появляется:
config/schema.json
— подсказывать доступные параметры;
— показывать описания и значения по умолчанию;
— подсвечивать неизвестные и deprecated-опции;
— проверять типы значений.
php bin/console lint:yaml config/packages/ --check-schema=config/schema.json
Получается довольно практичное улучшение: ошибки в YAML-конфигурации можно поймать ещё до запуска приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Laravel AI SDK позволяет добавлять AI-функции прямо в приложение — без отдельного Python-сервиса и ручной работы с API.
В гайде разобраны практические сценарии:
— автоматический разбор и приоритизация тикетов;
— AI-ассистент с доступом к данным через tools;
— семантический поиск и RAG;
— действия с обязательным подтверждением человека;
— транскрибация голосовых сообщений.
Отдельно показано, как работать со structured output, очередями, фейками для тестов и fallback между провайдерами.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
В PHP 8.4 появились array_find(), array_find_key(), array_any() и array_all().
Вместо:
foreach ($users as $user) {
if ($user->isAdmin()) {
$admin = $user;
break;
}
}
можно написать:
$admin = array_find($users, fn($user) => $user->isAdmin());
Мелочь, но код сразу читается как то, что именно мы хотим найти, а не как инструкция для обхода массива.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👏3🤔2👾2❤1
❤️ — 1
🔥 — 2
👍 — 12
👾 — Fatal error
Причём return внутри finally перезаписывает результат, который должен был вернуть try.
⚠️ Ловушка на собесе: если убрать return 2 из finally, функция вернёт 1.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32❤8👍4🤔3
🔐 ramsey/uuid — UUID без самописного кода
Библиотека помогает генерировать, парсить и валидировать UUID, а также работать с ними как с объектами.
Подходит, когда UUID активно используются в проекте и хочется вынести всю работу с ними в готовый инструмент.
🔗 GitHub
🐸 Библиотека пхпшника
Библиотека помогает генерировать, парсить и валидировать UUID, а также работать с ними как с объектами.
use Ramsey\Uuid\Uuid;
$id = Uuid::uuid4();
echo $id->toString();
Подходит, когда UUID активно используются в проекте и хочется вынести всю работу с ними в готовый инструмент.
Please open Telegram to view this post
VIEW IN TELEGRAM
🌚3👍1🔥1