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

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

@dev_notes_ru

Заметки о Frontend, Backend и немного DevOps. В основном о #PHP, #Laravel, #JavaScript, #HTML, #CSS, тестировании и настройке серверов.

https://www.dev-notes.ru

@snakenf
Subscribers
458
Photos
740
Videos
4
Links
1.2K

Showing posts older than #1607 · Back to latest

Older Posts 20 shown
Post #1606 313
Каст модели AsUri

Ash Allen предоставил каст модели AsUri, преобразующий значения в экземпляр Illuminate\Support\Uri и обратно.

use Illuminate\Support\Uri;
use Illuminate\Database\Eloquent\Casts\AsUri;

protected function casts(): array
{
return [
// ...
'destination_url' => AsUri::class,
];
}

// Set a URL
$shortUrl->destination_url = new Uri('https://www.example.com:1234/hello?param=value');
$shortUrl->save();


👩‍💻 Подробности см. в Pull Request #55909.

📱 @dev_notes_ru

#Laravel #Laravel12
  • 👍 1
Post #1605 305
Зачем нужны логические свойства CSS

Сегодня я хотел бы поговорить о логических свойствах CSS — новом (и, возможно, более эффективном) способе определения свойств, которые по своей природе являются направленными.

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

📱 @dev_notes_ru

#Frontend #CSS
  • 👍 2
  • ❤ 1
Post #1604 325
CSS `if()`: новая функция условной логики доступна в Chrome 137+

CSS с каждым днем превращается в настоящий «язык программирования». С появлением новых возможностей, таких как CSS переменные, функция `calc()`, псевдоклассы `:has()` и `:is()`, а также универсальные `@media` запросы, CSS упрощает создание сложных стилей и макетов.

В CSS появилась новая функция if(), пока доступная только в Chrome 137 и выше. Это первый шаг к условной логике прямо в стилях.

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

📱 @dev_notes_ru

#Frontend #CSS
  • 👍 2
  • ❤ 1
  • 🔥 1
Post #1600 423
Преобразуйте исключения CSRF mismatch в исключения валидации для улучшения пользовательского опыта.

Поскольку исключения валидации обычно генерируют ответ редиректа, токен CSRF должен автоматически обновляться, чтобы пользователь мог повторить попытку. 👍

📱 @dev_notes_ru

#Laravel #CSRF #tips
  • 👍 3
  • ❤ 1
  • 🔥 1
Post #1598 370
Вместо добавления множества файлов в .gitignore. Мы, просто, игнорируем всё. Отслеживаемые файлы необходимо добавлять вручную с помощь. git add -f myfile

📱 @dev_notes_ru

#joke
Post #1596 439
Что-то пошло не так

📱 @dev_notes_ru

#joke
  • 👍 4
  • 🔥 1
  • 🤣 1
Post #1595 454
Проверка существования представления в Laravel

Если вы работаете с представлениями в Laravel напрямую и нужно заранее проверить, существует ли представление, вот как это сделать.

Это очень просто! Просто используйте метод exists класса View. В данном примере используется хелпер view.

if (view()->exists('some.view')) {
// ...
}


Учтите, что some.view соответствует файлу /some/view.blade.php. Этот метод работает с точечной нотацией так же, как и при рендеринге представлений.

📱 @dev_notes_ru

#Laravel #View #tips
  • ❤ 2
  • 👍 1
Post #1594 408
- Я использую C++ в JavaScript
- Покажи

📱 @dev_notes_ru

#joke
  • 🤣 8
  • 🔥 3
  • 😎 1
Post #1593 436
PHP разработчики vs. Хэйтеры PHP

📱 @dev_notes_ru

#joke
  • 👍 3
  • 😁 3
  • 🤣 1
Post #1592 345
Отключение событий при создании Eloquent моделей

При тестировании часто возникает необходимость создавать записи через модель без запуска связанных событий. Сделать это очень просто с помощью метода createQuietly.

Пример использования со стандартной моделью:

$user = User::createQuietly([
'name' => 'Mabel',
'email' => 'mabel@codecourse.com'
]);


Метод createQuietly не запускает никакие события, поэтому обработчики в наблюдателях моделей не сработают.

Особенно удобно при тестировании с фабриками:

User::factory(3)->createQuietly();


Этот код создаст трёх пользователей без генерации событий.

Другие варианты "тихого" создания:

- createOneQuietly() - для создания одной записи
- createManyQuietly() - для массового создания

Эти методы помогают ускорить тесты и избежать побочных эффектов при работе с моделями.

📱 @dev_notes_ru

#Laravel #Eloquent #tips
  • 👍 3
Post #1591 308
👩‍💻 Мемоизация кэша в Laravel: Как работает `Cache::memo()` и зачем он нужен

Как использовать мемоизацию кэша в Laravel для повышения производительности и сокращения сетевых обращений к Redis, Memcached и другим хранилищам.

Даже если вы используете кэш, Laravel каждый раз обращается к внешнему хранилищу. Это может быть Redis или Memcached — и каждый такой запрос может занимать лишние миллисекунды. В больших приложениях это превращается в серьёзную нагрузку.

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

📱 @dev_notes_ru

#Laravel #Cache
  • 👍 1
  • 🔥 1
Post #1590 307
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
Post #1589 289
👩‍💻 Что такое this в JavaScript

Во второй части серии Mat Marquis объясняет, что такое this на самом деле, и помогает разобраться, чему он соответствует, исходя из различных контекстов.

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

📱 @dev_notes_ru

#JavaScript
  • 👍 1
Post #1588 285
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
  • 👍 3
  • 🤣 1
Post #1587 289
👩‍💻 Переход от instanceof к Error.isError: надёжная проверка ошибок в JavaScript

Классическая проверка err instanceof Error отлично работает, пока код не пересекает границы iframe, воркеров или SSR. В этих случаях проверка ломается, а система мониторинга видит лишь пустой объект, теряя контекст падения.

Решение уже в спецификации — метод Error.isError(). Он проверяет не прототип (который разный в разных контекстах), а внутренний "бренд" объекта. Это надежно работает везде.

Что нового узнаете:

✅ Почему instanceof пасует перед ошибками из других рилмов.
✅ Как работает Error.isError() и почему он не обманывается на подделках через Object.create().
✅ Стратегия внедрения с функцией-обёрткой для обратной совместимости.

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

📱 @dev_notes_ru

#JavaScript
  • 👍 1
Post #1586 305
💡 Совет по Laravel: Многоразовые конвейеры

Конвейеры позволяют разделить большую задачу на более мелкие и управляемые. Иногда требуется использовать один и тот же конвейер в разных местах, и оказалось, что Laravel позволяет определять многоразовые конвейеры из коробки 🚀.

📱 @dev_notes_ru

#Laravel #Pipeline #tips
  • 👍 2
  • ❤ 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →