• Час читання ~4 хв
  • 03.04.2024

Цього тижня команда Laravel випустила версію 11.2, яка включає помічник підтримки fluent(), помічник context(), покращену обробку відсутньої бази даних під час migrate операції та багато іншого.

Fluent Helper

Філо Херманс (Philo Hermans) вніс допоміжну fluent() функцію при роботі з багатовимірними масивами. Клас Fluent вже досить давно знаходиться у фреймворку Laravel; однак цей PR вводить допоміжний метод зручності для створення екземпляра вільного об'єкта:

$data = [
    'user' => [
        'name' => 'Philo',
        'address' => [
            'city' => 'Amsterdam',
            'country' => 'Netherlands',
        ]
    ],
    'posts' => [
        [
            'title' => 'Post 1',
        ],
        [
            'title' => 'Post 2',
        ]
    ]
];
collect($data)->get('user');
fluent($data)->user;

collect($data)->get('user')['name'];
fluent($data)->get('user.name');

collect(collect($data)->get('posts'))->pluck('title');
fluent($data)->collect('posts')->pluck('title');

json_encode(collect($data)->get('user')['address']);
fluent($data)->scope('user.address')->toJson();

Помічник контекстуМайкл Набіль (Michael Nabil

) вніс функцію зручного context() помічника для керування контекстом. Залежно від переданих аргументів, ви можете або додати до контексту, або отримати контекстний об'єкт, або отримати його (з необов'язковим користувацьким типовим значенням):

// Add user information to the context
context(['user' => auth()->user()]);

// Retrieve the context object
$context = context();

// Retrieve user information from the context
$user = context('user');

// Optional custom default value if not found.
$some_key = context('key_that_does_not_exist', false);

Значення за замовчуванням для геттерів контексту Майкл

Набіль вніс підтримку значення за замовчуванням для геттерів контексту:

// Before: Returns null if not found
Context::get('is_user');
Context::getHidden('is_user');

// After: Returns `false` if not found
Context::get('is_user', false); // false
Context::getHidden('is_user', false); // false
Context::get('is_user'); // null

Методи

затвердження тесту ланцюжка завданьГюнтер Дебрауер assertHasChain() та assertDoesntHaveChain() методи:

public function test_job_chains_foo_bar_job(): void
{
    $job = new TestJob();

    $job->handle();

    $job->assertHasChain([
        new FooBarJob();
    ]);
    // $job->assertDoesntHaveChain();
}

Краща обробка

створення бази даних/стиранняDries Vints сприяв кращій обробці помилок бази даних (#50836) під час запускуmigrate, коли база даних ще не створена, а також оновив команду migrate:fresh для спрощення процесу, коли бази даних не існує #50838:

Якщо migrate:fresh команда викликається, коли ще не створено жодної бази даних, вона зазнає невдачі при спробі стерти базу даних. Цей PR виправляє це, спочатку перевіряючи, чи існує таблиця міграції, а якщо ні, негайно переходьте до команди migrate, пропустивши команду db:wipe. Це викличе потік команд migrate і згодом досягне точки, коли команда попросить користувача створити базу даних.

У поєднанні з #50836 це запропонує більш безперебійний досвід для людей, які намагаються встановити Jetstream через інсталятор Laravel і вирішують не створювати базу даних.

Наведений вище опис взято з Запиту на Пул #50838.

Обрізання рядків видаляє невидимі символи

Дасун Таранга вніс оновлення проміжного програмного забезпечення фреймворкуTrimStrings, де невидимі символи не обрізаються під час HTTP-запиту, що може спричинити проблеми під час надсилання форм. Дивіться Запит на Пул #50832 для подробиць.

Примітки

до випуску Ви можете переглянути повний список нових функцій та оновлень нижче, а також різницю між версіями 11.1.0 та 11.2.0 на GitHub. Наступні нотатки щодо випуску взято безпосередньо з журналу змін:

v11.2.0

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297