en
Feedback
Заметки разработчика

Заметки разработчика

Open in Telegram

Заметки о Frontend, Backend и немного DevOps. В основном о #PHP, #Laravel, #JavaScript, #HTML, #CSS, тестировании и настройке серверов. https://www.dev-notes.ru @snakenf

Show more
Buy Ad
463
Subscribers
No data24 hours
-37 days
+130 days
Posts Archive
Laravel 12.6: Новый метод `requestException()` для удобной обработки ошибок HTTP-тестов Laravel 12.6 представляет метод requestException() — более простой способ создания экземпляров RequestException при тестировании работы HTTP-клиента. Теперь можно эмулировать ошибочные ответы сервера чище и лаконичнее. 🔧 Как это работало раньше:
use Illuminate\Http\Client\RequestException;
use Illuminate\Http\Client\Response;

$exception = new RequestException(
    new Response(
        Http::response(['error' => 'invalid_token'], 401)
    )
);
✅ Теперь с `requestException()`:
use Illuminate\Support\Facades\Http;

$exception = Http::requestException(['error' => 'invalid_token'], 401);
Нужны кастомные заголовки? Просто передайте их:
$exception = Http::requestException(
    ['message' => 'Too many requests'],
    429,
    ['X-RateLimit-Reset' => '30']
);
✨ Почему это удобно: - Меньше шаблонного кода в тестах - Лучшая читаемость и понятность - Упрощает поддержку и рефакторинг 📌 Метод requestException() делает HTTP-тесты чище, быстрее и выразительнее. 📱 @dev_notes_ru #Laravel #Laravel12

👩‍💻 Что такое this в JavaScript Во второй части серии Mat Marquis объясняет, что такое this на самом деле, и помогает разоб
👩‍💻 Что такое this в JavaScript Во второй части серии Mat Marquis объясняет, что такое this на самом деле, и помогает разобраться, чему он соответствует, исходя из различных контекстов. 🖥 Читать статью 📱 @dev_notes_ru #JavaScript

Laravel Enum: Чистый, структурированный и удобный для разработчиков Теперь Laravel поддерживает нативные классы Enum со встроенными функциями кастинга, меток и генерации через Artisan. Это отличный способ избавиться от "магических" строк и чисел в моделях и формах. 🔧 Создание Enum через Artisan:
php artisan make:enum UserRole
📁 Создастся файл: app/Enums/UserRole.php 📦 Пример класса Enum:
namespace App\Enums;

enum UserRole: string
{
    case Admin = 'admin';
    case Manager = 'manager';
    case Customer = 'customer';

    public function label(): string
    {
        return match($this) {
            self::Admin => 'Администратор',
            self::Manager => 'Менеджер',
            self::Customer => 'Клиент',
        };
    }

    public static function options(): array
    {
        return array_map(
            fn($role) => ['value' => $role->value, 'label' => $role->label()],
            self::cases()
        );
    }
}
✅ Как использовать: 📌 Приведение типов в модели:
protected $casts = [
    'role' => UserRole::class,
];
📌 Работа с Enum:
$user->role = UserRole::Admin;
echo $user->role->label(); // "Администратор"
📌 Генерация <select> (Blade или Livewire):
<select name="role">
    @foreach (App\Enums\UserRole::options() as $option)
        <option value="{{ $option['value'] }}">{{ $option['label'] }}</option>
    @endforeach
</select>
📌 Валидация ввода:
'role' => ['required', new Enum(UserRole::class)],
📌 Laravel Enums делают код чище, улучшают его читаемость и уменьшают количество ошибок, связанных с недопустимыми значениями. Используйте make:enum, для быстрого создания, и расширяйте функциональность по мере необходимости. 📱 @dev_notes_ru #Laravel

👩‍💻 Error.isError(): Лучший способ проверки типов ошибки в JavaScript Руководство по новому методу `Error.isError()` в Java
👩‍💻 Error.isError(): Лучший способ проверки типов ошибки в JavaScript Руководство по новому методу `Error.isError()` в JavaScript: почему он лучше `instanceof`, как решает проблемы кросс-контекстных ошибок и типизации в TypeScript. Система обработки ошибок JavaScript долгое время оставалась слепым пятном при работе с ошибками в разных контекстах исполнения. Новый метод Error.isError() устраняет это ограничение, предоставляя разработчикам более надёжный способ идентификации объектов ошибок. 🖥 Читать статью 📱 @dev_notes_ru #JavaScript

💡 Совет по Laravel: Многоразовые конвейеры Конвейеры позволяют разделить большую задачу на более мелкие и управляемые. Иногд
💡 Совет по Laravel: Многоразовые конвейеры Конвейеры позволяют разделить большую задачу на более мелкие и управляемые. Иногда требуется использовать один и тот же конвейер в разных местах, и оказалось, что Laravel позволяет определять многоразовые конвейеры из коробки 🚀. 📱 @dev_notes_ru #Laravel #Pipeline #tips

Всего через шесть месяцев вайб-кодинга 📱 @dev_notes_ru #joke
Всего через шесть месяцев вайб-кодинга 📱 @dev_notes_ru #joke

Пользователи Linux вернувшиеся в Linux после 10 минут использования Windows 📱 @dev_notes_ru #joke
Пользователи Linux вернувшиеся в Linux после 10 минут использования Windows 📱 @dev_notes_ru #joke

👩‍💻 Убедитесь, что фейковое задание реализует контракт задания Tim MacDonald добавил контракт Illuminate\Contracts\Queue\Job в класс FakeJob, используемый в тестах для имитации заданий в очереди:
Имитация задания используется в тех местах, где ожидается реализация контракта задания. Это гарантирует, что фейковое задание поддерживает строгую типизацию контракта задания, например, при прослушивании событий и передаче экземпляра задания.
🖥 Pull Request #55574 📱 @dev_notes_ru #Laravel12 #tips

👩‍💻 Внутреннее устройство React: Какой useEffect запускается первым? Это не особенно очевидно, но дочерний useEffect будет
👩‍💻 Внутреннее устройство React: Какой useEffect запускается первым? Это не особенно очевидно, но дочерний useEffect будет выполняться раньше родительского. Давайте разберемся, почему. useEffect — один из наиболее часто используемых хуков в сообществе React. Независимо от того, сколько у вас опыта работы с React, вы наверняка его уже использовали. Но приходилось ли сталкиваться с ситуациями, когда хуки useEffect запускаются в неожиданном порядке, если задействовано несколько слоев компонентов? 🖥 Читать статью 📱 @dev_notes_ru #React #useEffect

👩‍💻 В полезную нагрузку заданий добавлены `createdAt` и `delay` Taylor Otwell внес вклад в добавление информации о создании и задержке задания в полезную нагрузку задания. delay - опциональная задержка задания в секундах, а createdAt - timestamp момента создания полезной нагрузки:
$job->payload();
/*
Теперь включает: ['delay' => 5, 'createdAt' => 1745965273]
*/
🖥 Pull Request #55529 📱 @dev_notes_ru #Laravel12 #tips

👩‍💻 Преобразование значений в строки в JavaScript Руководство по преобразованию значений в строки в JavaScript: сравнение 5
👩‍💻 Преобразование значений в строки в JavaScript Руководство по преобразованию значений в строки в JavaScript: сравнение 5 методов, работа с объектами и JSON.stringify(), практические примеры и лучшие практики. Преобразование значений в строки в JavaScript сложнее, чем кажется: - В большинстве подходов есть значения, которые они не могут обработать. - Мы не всегда видим все данные. 🖥 Читать статью 📱 @dev_notes_ru #JavaScript

👩‍💻 Типизированные геттеры для хелперов `Arr` Anthony Tibbs создал типизированные хелперы геттеров класса поддержки Arr для array, boolean, float, integer и string. Каждый метод попытается вернуть тип и выбросит исключение, если данные не соответствуют типу:
use Illuminate\Support\Arr;
$array = ['name' => 'Joe', 'languages' => ['PHP', 'Ruby']];
 
$value = Arr::array($array, 'languages'); // ['PHP', 'Ruby']
$value = Arr::array($array, 'name'); // throws InvalidArgumentException
🖥 Pull Request #55567 📱 @dev_notes_ru #Laravel12 #tips

👩‍💻 this в JavaScript: Когда определяется this Ключевое слово this в JavaScript ставит в тупик всех разработчиков — от джун
👩‍💻 this в JavaScript: Когда определяется this Ключевое слово this в JavaScript ставит в тупик всех разработчиков — от джунов до сеньоров. В первой из двух частей углубимся в основы, необходимые для лучшего понимания this и того, как он работает. 🖥 Читать статью 📱 @dev_notes_ru #JavaScript #this

У вас есть связь, в которой нужна только самая последняя или самая старая связанная модель? Используйте latestOfMany() или ol
У вас есть связь, в которой нужна только самая последняя или самая старая связанная модель? Используйте latestOfMany() или oldestOfMany() с hasOne(), для доступа только к одной записи, без сложных подзапросов. 🖥 Ссылка на документацию 📱 @dev_notes_ru #Laravel #tips

PHP 8.5: Новые функции массивов array_first() и array_last() В PHP 8.5 добавлены две новые функции получения первого и послед
PHP 8.5: Новые функции массивов array_first() и array_last() В PHP 8.5 добавлены две новые функции получения первого и последнего значений массива. Эти функции дополняют функции array_key_first и array_key_last, добавленные в PHP 7.3. 🖥 Читать статью 📱 @dev_notes_ru #PHP #PHP85 #features

PHP 8.5: Новые возможности и изменения PHP 8.5 — это активная ветвь разработки, в которую в настоящее время добавляются новые
PHP 8.5: Новые возможности и изменения PHP 8.5 — это активная ветвь разработки, в которую в настоящее время добавляются новые функции, основные изменения и новые RFC. Релиз выйдет 20 ноября 2025 год. 🖥 Читать статью 📱 @dev_notes_ru #PHP #PHP85 #features

Новые методы массивов в PHP 8.5: array_first() и array_last() Разбираем новые функции массива `array_first()` и `array_last()
Новые методы массивов в PHP 8.5: array_first() и array_last() Разбираем новые функции массива `array_first()` и `array_last()` в PHP 8.5: синтаксис, примеры использования и сравнение с `reset()` и `end()`. Узнайте, как упростить работу с массивами. 🖥 Читать статью 📱 @dev_notes_ru #PHP #Array #tips

👩‍💻 Vim быстрое сохранение :w сохраняет файл в Vim. Но знаете ли вы? В Нормальном режиме нажатие ZZ (Shift + zz) делает то же самое, а ZQ (Shift + zq) завершает работу без сохранения. Готов поспорить, вы этого не знали, по крайней мере, я не знал. 🤣 📱 @dev_notes_ru #vim #tips

LinkedIn: На этой неделе вы появились в 367 поисковых запросах Я: Так где же моя работа? 📱 @dev_notes_ru #joke
LinkedIn: На этой неделе вы появились в 367 поисковых запросах Я: Так где же моя работа? 📱 @dev_notes_ru #joke

Я не всегда тестирую свой код. Но когда тестирую, то делаю это в продакшне. 📱 @dev_notes_ru #joke
Я не всегда тестирую свой код. Но когда тестирую, то делаю это в продакшне. 📱 @dev_notes_ru #joke