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
assertRedirectBack() портирован в Laravel 11 Graham Campbell портировал TestResponse::assertRedirectBack, добавленный в Laravel 12.13 в Laravel 11:
$testResponse->assertRedirectBack();
👩‍💻 Подробности см. в Pull Request #55780. 📱 @dev_notes_ru #Laravel #Laravel11

В Query Builder добавлен reorderDesc() Rihulfa Akbar добавил в конструктор запросов метод reorderDesc(), являющийся сокращением для добавления в запрос условия сортировки по убыванию:
// использование reorder()
$this->reorder($column, 'desc');
 
// reorderDesc()
$query->reorderDesc($column);
👩‍💻 Подробности см. в Pull Request #55885. 📱 @dev_notes_ru #Laravel #Laravel12

Контекстный биндинг интерфейса через атрибуты Yitz Willroth добавил атрибут Give, позволяющий использовать контекстные зависимости с помощью атрибутов PHP 8:
// Традиционный подход - в ServiceProvider
$this->app->when(UserController::class)
    ->needs(UserRepositoryInterface::class)
    ->give(DatabaseUserRepository::class);
 
use Illuminate\Container\Attribute\Give;
 
// Использование атрибута Give
class UserController extends Controller
{
    public function __construct(
        #[Give(DatabaseUserRepository::class)]
        private UserRepositoryInterface $userRepository
    ) {}
}
 
// Ещё один пример
class OrderService
{
    public function __construct(
        #[Give(StripePaymentProcessor::class)]
        private PaymentProcessorInterface $processor
    ) {}
}
👩‍💻 Подробности см. в Pull Request #55904. 📱 @dev_notes_ru #Laravel #Laravel12

Агрегатные функции SQL В статье мы рассмотрим наиболее часто используемые агрегатные функции SQL, их синтаксис, практические
Агрегатные функции SQL В статье мы рассмотрим наиболее часто используемые агрегатные функции SQL, их синтаксис, практические примеры и способы оптимального использования в запросах. 🖥 Читать статью 📱 @dev_notes_ru #DataBase #SQL

Каст модели 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

Зачем нужны логические свойства CSS Сегодня я хотел бы поговорить о логических свойствах CSS — новом (и, возможно, более эффе
Зачем нужны логические свойства CSS Сегодня я хотел бы поговорить о логических свойствах CSS — новом (и, возможно, более эффективном) способе определения свойств, которые по своей природе являются направленными. 🖥 Читать статью 📱 @dev_notes_ru #Frontend #CSS

CSS `if()`: новая функция условной логики доступна в Chrome 137+ CSS с каждым днем превращается в настоящий «язык программиро
CSS `if()`: новая функция условной логики доступна в Chrome 137+ CSS с каждым днем превращается в настоящий «язык программирования». С появлением новых возможностей, таких как CSS переменные, функция `calc()`, псевдоклассы `:has()` и `:is()`, а также универсальные `@media` запросы, CSS упрощает создание сложных стилей и макетов. В CSS появилась новая функция if(), пока доступная только в Chrome 137 и выше. Это первый шаг к условной логике прямо в стилях. 🖥 Читать статью 📱 @dev_notes_ru #Frontend #CSS

Пятничное 🤣 📱 @dev_notes_ru #joke
Пятничное 🤣 📱 @dev_notes_ru #joke

Преобразуйте исключения CSRF mismatch в исключения валидации для улучшения пользовательского опыта. Поскольку исключения вали
Преобразуйте исключения CSRF mismatch в исключения валидации для улучшения пользовательского опыта. Поскольку исключения валидации обычно генерируют ответ редиректа, токен CSRF должен автоматически обновляться, чтобы пользователь мог повторить попытку. 👍 📱 @dev_notes_ru #Laravel #CSRF #tips

Vibe-код - код спагетти 📱 @dev_notes_ru #joke
Vibe-код - код спагетти 📱 @dev_notes_ru #joke

Вместо добавления множества файлов в .gitignore. Мы, просто, игнорируем всё. Отслеживаемые файлы необходимо добавлять вручную
Вместо добавления множества файлов в .gitignore. Мы, просто, игнорируем всё. Отслеживаемые файлы необходимо добавлять вручную с помощь. git add -f myfile 📱 @dev_notes_ru #joke

В случае пожара 📱 @dev_notes_ru #joke
В случае пожара 📱 @dev_notes_ru #joke

Что-то пошло не так 📱 @dev_notes_ru #joke
Что-то пошло не так 📱 @dev_notes_ru #joke

Проверка существования представления в Laravel Если вы работаете с представлениями в Laravel напрямую и нужно заранее проверить, существует ли представление, вот как это сделать. Это очень просто! Просто используйте метод exists класса View. В данном примере используется хелпер view.
if (view()->exists('some.view')) {
    // ...
}
Учтите, что some.view соответствует файлу /some/view.blade.php. Этот метод работает с точечной нотацией так же, как и при рендеринге представлений. 📱 @dev_notes_ru #Laravel #View #tips

- Я использую C++ в JavaScript - Покажи 📱 @dev_notes_ru #joke
- Я использую C++ в JavaScript - Покажи 📱 @dev_notes_ru #joke

PHP разработчики vs. Хэйтеры PHP 📱 @dev_notes_ru #joke
PHP разработчики vs. Хэйтеры PHP 📱 @dev_notes_ru #joke

Отключение событий при создании Eloquent моделей При тестировании часто возникает необходимость создавать записи через модель без запуска связанных событий. Сделать это очень просто с помощью метода createQuietly. Пример использования со стандартной моделью:
$user = User::createQuietly([
    'name' => 'Mabel',
    'email' => 'mabel@codecourse.com'
]);
Метод createQuietly не запускает никакие события, поэтому обработчики в наблюдателях моделей не сработают. Особенно удобно при тестировании с фабриками:
User::factory(3)->createQuietly();
Этот код создаст трёх пользователей без генерации событий. Другие варианты "тихого" создания: - createOneQuietly() - для создания одной записи - createManyQuietly() - для массового создания Эти методы помогают ускорить тесты и избежать побочных эффектов при работе с моделями. 📱 @dev_notes_ru #Laravel #Eloquent #tips

👩‍💻 Мемоизация кэша в Laravel: Как работает `Cache::memo()` и зачем он нужен Как использовать мемоизацию кэша в Laravel для
👩‍💻 Мемоизация кэша в Laravel: Как работает `Cache::memo()` и зачем он нужен Как использовать мемоизацию кэша в Laravel для повышения производительности и сокращения сетевых обращений к Redis, Memcached и другим хранилищам. Даже если вы используете кэш, Laravel каждый раз обращается к внешнему хранилищу. Это может быть Redis или Memcached — и каждый такой запрос может занимать лишние миллисекунды. В больших приложениях это превращается в серьёзную нагрузку. 🖥 Читать статью 📱 @dev_notes_ru #Laravel #Cache