• Время чтения ~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);

Значение по умолчанию для геттеров контекста Майкл

Набиль (Michael Nabil) внес свой вклад в поддержку значения по умолчанию для геттеров контекста:

// 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

Методы утверждения тестов цепочки заданийГюнтер Дебраувер (Günther Debrauwer) и assertDoesntHaveChain() методы:

assertHasChain()

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 и решивших не создавать базу данных.

Приведенное выше описание взято из Pull Request #50838.

Обрезка строк удаляет невидимые символы Дасун

Таранга внес свой вклад в обновление промежуточного ПО фреймворкаTrimStrings, в котором невидимые символы не обрезаются во время HTTP-запроса, что может вызвать проблемы при отправке форм. Подробнее см. в Pull Request #50832.

Заметки о

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

Версия 11.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