Заметки разработчика
473 subscribers
667 photos
4 videos
1.16K links
Заметки о Frontend, Backend и немного DevOps. В основном о #PHP, #Laravel, #JavaScript, #HTML, #CSS, тестировании и настройке серверов.

https://www.dev-notes.ru

@snakenf
Download Telegram
👩‍💻 PHP 8.5 — что нового?
В конце года выходит PHP 8.5, и он приносит множество интересных обновлений:

— оператор конвейера |>
array_first() и array_last()
— атрибут #[\NoDiscard]
— улучшения cURL, Directory, трассировки ошибок
— и даже замыкания в константах!

🖥 Читать статью

📱 @dev_notes_ru

#PHP #PHP85
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
ECMAScript 2025 утверждён!

На 129-й Генеральной ассамблее Ecma был принят новый стандарт JavaScript. Что нас ждёт:

Импорт JSON с with { type: 'json' }
iterator.filter().drop().take() — полноценные цепочки итераторов
Set.prototype.union(), intersection() и другие
Promise.try() и RegExp.escape()
Поддержка Float16Array и inline-флагов в регулярках

🖥 Читать статью

📱 @dev_notes_ru

#JavaScript #ECMAScript2025 #ES2025 #frontend #вебразработка
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from The Dragon Code News
4 дня назад вышел новый стандарт стиля кода - PER-CS v3.0

Документ миграции с версии PER-CS 2.0 можно найти здесь.

https://github.com/php-fig/per-coding-style/releases/tag/3.0.0
👍3
- ОК, не буду усложнять. Всё, что мне нужно, это протестировать API на localhost.
- Тебе нужен интернет

📱 @dev_notes_ru

#joke
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣3
Вайб-кодинг, это когда два инженера могут создать технический долг как минимум для 50 инженеров.

📱 @dev_notes_ru

#joke
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣3👍1
Что следует избегать в JavaScript

Даже опытные разработчики иногда совершают ошибки, которые ведут к багам, уязвимостям и странному поведению.
В статье — список распространённых антипаттернов, которых лучше избегать:

🚫 innerHTML вместо textContent
🚫 JSON.stringify() для сравнения объектов
🚫 == вместо ===
🚫 eval() и var
🚫 Функции с 6 аргументами подряд
…и другие ловушки, в которые попадали почти все.

🔎 Это не догмы, а практичные советы, основанные на реальных граблях.

🖥 Читать статью

📱 @dev_notes_ru

#JavaScript #tips #антипаттерны #советы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
- Зачем нужно знать, реализацию быстрой сортировки?
- Чтобы пройти собеседования.
- А потом?
- Проводить собеседования других людей.

📱 @dev_notes_ru

#joke
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Именно так выглядит SQL JOIN для PHP-разработчика.

📱 @dev_notes_ru

#joke
Please open Telegram to view this post
VIEW IN TELEGRAM
😁7
На чьей ты стороне?

📱 @dev_notes_ru

#joke
Please open Telegram to view this post
VIEW IN TELEGRAM
2👎2🤨2🔥1🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣5🔥4
🔥 Все ещё используете 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() делает код кратким и понятным — идеально подходит для небольших, отказоустойчивых операций.

Ведь иногда одной строки бывает достаточно.

👩‍💻 Хелпер `rescue()`

📱 @dev_notes_ru

#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;
});


📱 @dev_notes_ru

#Laravel #Laravel12
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥21
🚀 Laravel: 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() — принимают как одиночные значения, так и массивы

💡 Используйте эти хелперы при проверке исключающих правил: заблокированных префиксов, запрещенных суффиксов или любых негативных условий в логике строк.

📱 @dev_notes_ru

#Laravel #Laravel12
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👎2
🧩 Laravel 12.x: 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 еще более... плавным.

📱 @dev_notes_ru

#Laravel #Laravel12 #Fluent
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
🔄 👩‍💻 PHP 8.5 — что нового?
В конце года выходит PHP 8.5, и он приносит множество интересных обновлений:

— оператор конвейера |>
array_first() и array_last()
— атрибут #[\NoDiscard]
— улучшения cURL, Directory, трассировки ошибок
— и даже замыкания в константах!

🖥 Читать статью

📱 @dev_notes_ru

#PHP #PHP85
Please open Telegram to view this post
VIEW IN TELEGRAM
🧩 Совет по Laravel: автоматическое переключение .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 сам всё сделает.

📱 @dev_notes_ru

#Laravel #Laravel12
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2
👩‍💻👩‍💻👩‍💻Руководство по установке и обновлению PHP 8.5 для Debian и Ubuntu

Полное руководство по установке и обновлению PHP 8.5 в Ubuntu и Debian: подключение репозитория Ondřej, установка PHP-FPM и расширений, миграция конфигурации, удаление старых версий и работа нескольких версий PHP одновременно.

🖥 Читать статью

📱 @dev_notes_ru

#PHP #PHP85
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🚀 PHP 8.5: что нового в сообщениях об ошибках

В PHP 8.5 появилось 265 новых сообщений об ошибках — строже типы, аккуратнее синтаксис, больше прозрачности при выполнении кода.
Мы разобрали самые частые из них:

— «syntax error, unexpected token “>”»
— ограничения pipe-оператора |>
— устаревшее использование null как индекса массива
— неканонические приведения типов ((integer), (boolean))
— замена $http_response_header на http_get_last_response_headers()
— ошибка при атрибутах в глобальных константах

🖥 Читать статью

📱 @dev_notes_ru

#PHP #PHP85
Please open Telegram to view this post
VIEW IN TELEGRAM
👩‍💻 PHP 8.5: Оператор pipe (|>)

В PHP 8.5 появился новый оператор pipe, который позволяет передавать результат одного вызова в следующий по цепочке — без вложенности и временных переменных.

$result = "Hello World"
|> strtoupper(...)
|> str_shuffle(...)
|> trim(...);


Оператор конвейера pipe работает с любыми callable: функциями, методами, замыканиями, объектами с __invoke.

Но есть ограничения:
❗️ Только один обязательный параметр
❗️Невозможность передавать аргументы по ссылке (кроме @prefer-ref),
❗️ Осторожно с void — дальше передаётся null.

Pipe не добавляет новых возможностей, но делает цепочки преобразований более читаемыми и функциональными по стилю.

🖥 Читать статью

📱 @dev_notes_ru

#PHP #PHP85 #pipe
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
⚙️ PHP 8.5: новое поведение 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 может бросать исключение сам.

⚡️ Отличное обновление, которое делает обработку ошибок намного чище.

🖥 Читать статью

📱 @dev_notes_ru

#PHP #PHP85 #Filter
Please open Telegram to view this post
VIEW IN TELEGRAM
🧠 PHP 8.5: новая директива max_memory_limit

В PHP 8.5 появилась новая INI-директива max_memory_limit, которая задаёт верхний предел для memory_limit. Теперь администратор может запретить скрипту увеличивать лимит памяти выше установленного значения — даже через ini_set().

Зачем это нужно
— защита от неконтролируемого роста потребления памяти;
— удобный потолок для продакшена, Docker и shared-hosting;
— предсказуемое поведение конфигурации.

Если memory_limit пытаются поставить выше max_memory_limit или отключить (-1), PHP выдаёт предупреждение и оставляет максимально разрешённое значение.

🖥 Читать статью

📱 @dev_notes_ru

#PHP #PHP85
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2