- Зачем нужно знать, реализацию быстрой сортировки?
- Чтобы пройти собеседования.
- А потом?
- Проводить собеседования других людей.
📱 @dev_notes_ru
#joke
- Чтобы пройти собеседования.
- А потом?
- Проводить собеседования других людей.
#joke
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣5🔥4
🔥 Все ещё используете
Признайтесь , иногда просто хочется получить данные, а не писать эссе на PHP.
Чисто? Не совсем.
Laravel хелпер
Если появляется ошибка, Laravel тихо обрабатывает исключение и продолжает работу.
Нужен резервный вариант?
Хотите получить выборочный отчет?
— Без повторяющихся
— Опциональная отчетность об ошибках
— Более чистый и безопасный код
Итог:
Ведь иногда одной строки бывает достаточно.
👩💻 Хелпер `rescue()`
📱 @dev_notes_ru
#Laravel #Laravel12
try-catch для мелких задач?Признайтесь , иногда просто хочется получить данные, а не писать эссе на PHP.
try {
$post = Post::findOrFail($id);
} catch (ModelNotFoundException $e) {
report($e);
$post = null;
}Чисто? Не совсем.
Laravel хелпер
rescue() делает это одной строкой:$post = rescue(fn() => Post::findOrFail($id));
Если появляется ошибка, Laravel тихо обрабатывает исключение и продолжает работу.
Нужен резервный вариант?
$post = rescue(
fn() => Post::findOrFail(999),
new Post(['title' => 'Untitled'])
);
Хотите получить выборочный отчет?
$data = rescue(
fn() => Http::get('https://api.example.com')->json(),
[],
report: fn($e) => $e instanceof ConnectionException
);
— Без повторяющихся
try-catch— Опциональная отчетность об ошибках
— Более чистый и безопасный код
Итог:
rescue() делает код кратким и понятным — идеально подходит для небольших, отказоустойчивых операций.Ведь иногда одной строки бывает достаточно.
#Laravel #Laravel12
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
rescue()Функция
rescue выполняет заданное замыкание и перехватывает все исключения, возникающие во время его выполнения. Все перехваченные исключения будут отправлены в ваш обработчик исключений, однако обработка запроса будет продолжена:return rescue(function () {
return $this->method();
});Вы также можете передать второй аргумент в функцию
rescue. Этот аргумент будет "значением по умолчанию", возвращаемым в случае возникновения исключения при выполнении замыкания:return rescue(function () {
return $this->method();
}, false);
return rescue(function () {
return $this->method();
}, function () {
return $this->failure();
});Аргумент
report может быть передан функции rescue для определения того, следует ли сообщать об исключении с помощью функции report:return rescue(function () {
return $this->method();
}, report: function (Throwable $throwable) {
return $throwable instanceof InvalidArgumentException;
});#Laravel #Laravel12
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2❤1
🚀 Laravel:
Иногда в коде необходимо проверить не то, чем начинается или заканчивается строка, а то, чем она не начинается и не заканчивается.
С помощью новейших строковых хелперов Laravel можно обойтись без неудобных отрицаний и писать условия, которые читаются как обычный текст.
🔧 Пример:
✅ Почему это важно
— Код становится более читабельным (больше нет
— Ясно выражает намерение: проверяется, чем строка не начинается и чем не заканчивается
— Такая же гибкость, как у
💡 Используйте эти хелперы при проверке исключающих правил: заблокированных префиксов, запрещенных суффиксов или любых негативных условий в логике строк.
📱 @dev_notes_ru
#Laravel #Laravel12
Str::doesntStartWith() и Str::doesntEndWith() — более чистые проверки строк на отрицательные условияИногда в коде необходимо проверить не то, чем начинается или заканчивается строка, а то, чем она не начинается и не заканчивается.
С помощью новейших строковых хелперов Laravel можно обойтись без неудобных отрицаний и писать условия, которые читаются как обычный текст.
🔧 Пример:
use Illuminate\Support\Str;
if (Str::doesntStartWith($username, ['admin_', 'sys_'])) {
// $username НЕ начинается с этих префиксов
}
if (Str::doesntEndWith($filename, ['.tmp', '.bak'])) {
// Имя файла $filename НЕ заканчивается на .tmp или .bak
}
✅ Почему это важно
— Код становится более читабельным (больше нет
!Str::startsWith())— Ясно выражает намерение: проверяется, чем строка не начинается и чем не заканчивается
— Такая же гибкость, как у
startsWith()/endsWith() — принимают как одиночные значения, так и массивы💡 Используйте эти хелперы при проверке исключающих правил: заблокированных префиксов, запрещенных суффиксов или любых негативных условий в логике строк.
#Laravel #Laravel12
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👎2
🧩 Laravel 12.x: Fluent теперь использует
Если вам нравится работать с классом
Теперь можно проверить, пуст ли экземпляр
🔧 Пример
💡 Почему это классно
— Быстрый способ проверки пустых объектов
— Более чистый способ, чем ручная проверка
— Полезно при работе с динамической конфигурацией, ответами API или DTO.
Небольшое улучшение, но оно делает
📱 @dev_notes_ru
#Laravel #Laravel12 #Fluent
isEmpty()Если вам нравится работать с классом
Fluent в Laravel, то понравится это небольшое обновление.Теперь можно проверить, пуст ли экземпляр
Fluent, с помощью нового метода isEmpty().🔧 Пример
use Illuminate\Support\Fluent;
$fluent = new Fluent(['name' => 'Taylor']);
$fluent->isEmpty(); // false
$empty = new Fluent();
$empty->isEmpty(); // true
💡 Почему это классно
— Быстрый способ проверки пустых объектов
Fluent.— Более чистый способ, чем ручная проверка
count() или преобразование в массивы.— Полезно при работе с динамической конфигурацией, ответами API или DTO.
Небольшое улучшение, но оно делает
Fluent еще более... плавным.#Laravel #Laravel12 #Fluent
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
В конце года выходит PHP 8.5, и он приносит множество интересных обновлений:
— оператор конвейера
|>—
array_first() и array_last()— атрибут
#[\NoDiscard]— улучшения
cURL, Directory, трассировки ошибок— и даже замыкания в константах!
#PHP #PHP85
Please open Telegram to view this post
VIEW IN TELEGRAM
🧩 Совет по Laravel: автоматическое переключение
Устали от жонглирования разными
Laravel поддерживает эту функцию — без хаков и изменений в
💻 Local (Valet / macOS)
1️⃣ Создайте файл
Valet автоматически обнаружит и использует его без дополнительной настройки.
Если не используете Valet, просто выполните:
Это укажет Laravel явно загрузить файл
🚀 Продакшен (Nginx)
На сервере создайте файл
Укажите Nginx использовать его:
Затем перезагрузите:
✅ Результат
— Локальная версия работает с
— Продакшен работает с
— Переключение происходит автоматически через
💡 Чисто и без лишних сложностей. Laravel сам всё сделает.
📱 @dev_notes_ru
#Laravel #Laravel12
.env для локальной разработки и продакшенаУстали от жонглирования разными
.env файлами между локальной средой и продакшеном?Laravel поддерживает эту функцию — без хаков и изменений в
bootstrap/app.php.💻 Local (Valet / macOS)
1️⃣ Создайте файл
.env.local:APP_ENV=local
APP_DEBUG=true
DB_DATABASE=your_local_db
Valet автоматически обнаружит и использует его без дополнительной настройки.
Если не используете Valet, просто выполните:
export APP_ENV=local && php artisan optimize
Это укажет Laravel явно загрузить файл
.env.local.🚀 Продакшен (Nginx)
На сервере создайте файл
.env.prod:APP_ENV=prod
APP_DEBUG=false
DB_DATABASE=your_prod_db
Укажите Nginx использовать его:
fastcgi_param APP_ENV prod;
Затем перезагрузите:
sudo service nginx reload
php artisan config:clear
php artisan cache:clear
✅ Результат
— Локальная версия работает с
.env.local.— Продакшен работает с
.env.prod.— Переключение происходит автоматически через
APP_ENV.💡 Чисто и без лишних сложностей. Laravel сам всё сделает.
#Laravel #Laravel12
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
Полное руководство по установке и обновлению PHP 8.5 в Ubuntu и Debian: подключение репозитория Ondřej, установка PHP-FPM и расширений, миграция конфигурации, удаление старых версий и работа нескольких версий PHP одновременно.
#PHP #PHP85
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🚀 PHP 8.5: что нового в сообщениях об ошибках
В PHP 8.5 появилось 265 новых сообщений об ошибках — строже типы, аккуратнее синтаксис, больше прозрачности при выполнении кода.
Мы разобрали самые частые из них:
— «
— ограничения pipe-оператора
— устаревшее использование
— неканонические приведения типов (
— замена
— ошибка при атрибутах в глобальных константах
🖥 Читать статью
📱 @dev_notes_ru
#PHP #PHP85
В PHP 8.5 появилось 265 новых сообщений об ошибках — строже типы, аккуратнее синтаксис, больше прозрачности при выполнении кода.
Мы разобрали самые частые из них:
— «
syntax error, unexpected token “>”»— ограничения pipe-оператора
|>— устаревшее использование
null как индекса массива— неканонические приведения типов (
(integer), (boolean))— замена
$http_response_header на http_get_last_response_headers()— ошибка при атрибутах в глобальных константах
#PHP #PHP85
Please open Telegram to view this post
VIEW IN TELEGRAM
|>)В PHP 8.5 появился новый оператор pipe, который позволяет передавать результат одного вызова в следующий по цепочке — без вложенности и временных переменных.
$result = "Hello World"
|> strtoupper(...)
|> str_shuffle(...)
|> trim(...);
Оператор конвейера pipe работает с любыми
callable: функциями, методами, замыканиями, объектами с __invoke.Но есть ограничения:
@prefer-ref), void — дальше передаётся null.Pipe не добавляет новых возможностей, но делает цепочки преобразований более читаемыми и функциональными по стилю.
#PHP #PHP85 #pipe
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
⚙️ PHP 8.5: новое поведение Filter — теперь с исключениями
В PHP 8.5 появилось важное обновление в работе
Больше никаких false и ручных проверок — валидация стала проще, предсказуемее и удобнее при работе с внешними данными. Полезно для API, CLI-инструментов и всего, где входящие данные критичны.
Коротко, что изменилось:
— новый флаг
— подробные сообщения об ошибках;
— работает для всех
— не совместим с
— не влияет на
⚡️ Отличное обновление, которое делает обработку ошибок намного чище.
🖥 Читать статью
📱 @dev_notes_ru
#PHP #PHP85 #Filter
В PHP 8.5 появилось важное обновление в работе
filter_*: теперь при провале валидации можно выбрасывать исключения с помощью нового флага FILTER_THROW_ON_FAILURE.Больше никаких false и ручных проверок — валидация стала проще, предсказуемее и удобнее при работе с внешними данными. Полезно для API, CLI-инструментов и всего, где входящие данные критичны.
Коротко, что изменилось:
— новый флаг
FILTER_THROW_ON_FAILURE;— подробные сообщения об ошибках;
— работает для всех
FILTER_VALIDATE_*;— не совместим с
FILTER_NULL_ON_FAILURE;— не влияет на
FILTER_CALLBACK, но callback может бросать исключение сам.⚡️ Отличное обновление, которое делает обработку ошибок намного чище.
#PHP #PHP85 #Filter
Please open Telegram to view this post
VIEW IN TELEGRAM
max_memory_limitВ PHP 8.5 появилась новая INI-директива
max_memory_limit, которая задаёт верхний предел для memory_limit. Теперь администратор может запретить скрипту увеличивать лимит памяти выше установленного значения — даже через ini_set().— защита от неконтролируемого роста потребления памяти;
— удобный потолок для продакшена, Docker и shared-hosting;
— предсказуемое поведение конфигурации.
Если
memory_limit пытаются поставить выше max_memory_limit или отключить (-1), PHP выдаёт предупреждение и оставляет максимально разрешённое значение.#PHP #PHP85
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🚀 PHP 8.5 получает новую Curl-функцию —
В свежем релизе PHP 8.5 расширение Curl обзавелось полезным обновлением: теперь можно напрямую получить список всех
Функция упрощает работу с множественными curl-запросами и делает мульти-обработку предсказуемее и удобнее.
🖥 Читать статью
📱 @dev_notes_ru
#PHP #PHP85 #cURL
curl_multi_get_handlesВ свежем релизе PHP 8.5 расширение Curl обзавелось полезным обновлением: теперь можно напрямую получить список всех
CurlHandle, добавленных в CurlMultiHandle. Раньше для этого приходилось вручную вести массивы или использовать WeakMap.Функция упрощает работу с множественными curl-запросами и делает мульти-обработку предсказуемее и удобнее.
#PHP #PHP85 #cURL
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
IntlListFormatterРасширение
Intl в PHP 8.5 добавляет новый класс IntlListFormatter. Он обеспечивает форматирование списков с учётом локализации в удобные для чтения списки "и"-списки, "или"-списки или единицы.Новый класс
IntlListFormatter следует тем же шаблонам, что и другие классы из расширения Intl; он создаётся с помощью валидной строки локали и использует данные ICU для фактического форматирования.#PHP #PHP85 #Intl
Please open Telegram to view this post
VIEW IN TELEGRAM
PHP 8.5: CLI:
В PHP 8.5 появилась полезная команда для отладки конфигурации —
🛠 Как это работает:
На выходе — список параметров, которые вы или система изменили:
🚀 Зачем это нужно:
✅ Больше не нужно вручную сравнивать
✅ Идеально для отчётов об ошибках — сразу видно, какие настройки могли вызвать проблему
✅ Работает в связке с другими CLI-опциями (
🔙 Обратная совместимость:
В старых версиях PHP команда не сломается — просто вернёт результат как
Отличный инструмент для всех, кто работает с настройкой PHP-серверов и отладкой окружения.
🖥 Читать статью
📱 @dev_notes_ru
#PHP #PHP85 #CLI
php --ini=diff отображает нестандартные INI директивыВ PHP 8.5 появилась полезная команда для отладки конфигурации —
php --ini=diff. Она моментально показывает все INI-настройки, которые отличаются от стандартных значений по умолчанию.🛠 Как это работает:
php --ini=diff
На выходе — список параметров, которые вы или система изменили:
Non-default INI settings:
html_errors: "1" -> "0"
max_execution_time: "30" -> "0"
php.ini или искать изменения в phpinfo()-d, -c, -n)🔙 Обратная совместимость:
В старых версиях PHP команда не сломается — просто вернёт результат как
php --ini.Отличный инструмент для всех, кто работает с настройкой PHP-серверов и отладкой окружения.
#PHP #PHP85 #CLI
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
PHP 8.5: новая функция
В PHP 8.5 появилось обновление для работы с многоязычными приложениями: функция
Эти инструменты значительно упрощают локализацию приложений и обеспечивают корректное отображение текста на языках с RTL написанием.
🖥 Читать статью
📱 @dev_notes_ru
#PHP #PHP85 #Intl #Locale
locale_is_right_to_left и метод Locale::isRightToLeftВ PHP 8.5 появилось обновление для работы с многоязычными приложениями: функция
locale_is_right_to_left и метод Locale::isRightToLeft, позволяющие разработчикам автоматически определять языки с написанием справа налево, включая арабский и иврит. Эти инструменты значительно упрощают локализацию приложений и обеспечивают корректное отображение текста на языках с RTL написанием.
#PHP #PHP85 #Intl #Locale
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1👍1
🚀 PHP 8.5: Поддержка трассировки стека для фатальных ошибок PHP
Раньше при фатальных ошибках мы видели только строку сбоя, без понимания полного пути выполнения кода. Теперь PHP показывает полный stack trace, что значительно ускоряет отладку.
📌 Что нового:
✅ Включено по умолчанию (можно отключить через
✅ Работает с существующими директивами (
✅ Без проблем обратной совместимости
Пример новой трассировки:
Это особенно удобно при работе с legacy-кодом и сложными цепочками вызовов в современных фреймворках.
🖥 Читать статью
📱 @dev_notes_ru
#PHP #PHP85 #Error
Раньше при фатальных ошибках мы видели только строку сбоя, без понимания полного пути выполнения кода. Теперь PHP показывает полный stack trace, что значительно ускоряет отладку.
📌 Что нового:
fatal_error_backtraces = Off)display_errors, #[\SensitiveParameter])Пример новой трассировки:
Stack trace:
#0 file.php(...): str_repeat('A', 5242880)
#1 file.php(...): my_heavy_function()
#2 {main}
Это особенно удобно при работе с legacy-кодом и сложными цепочками вызовов в современных фреймворках.
#PHP #PHP85 #Error
Please open Telegram to view this post
VIEW IN TELEGRAM
PHP 8.5: Новые функции
PHP 8.5 добавил две полезные функции, которых не хватало годами:
🖥 Читать статью
📱 @dev_notes_ru
#PHP #PHP85 #Error
get_exception_handler и get_error_handlerPHP 8.5 добавил две полезные функции, которых не хватало годами:
get_error_handler() и get_exception_handler(). Раньше приходилось временно ставить новый обработчик, чтобы узнать текущий. Теперь легко получить текущий обработчик ошибок или исключений — без хаков и костылей.#PHP #PHP85 #Error
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2