Локалізований парсинг чисел у Laravel 12.15

2
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
Оновлення Laravel до версії 12.15.0 принесло ряд захоплюючих нововведень, включаючи локаційне розпізнавання чисел та нові методи для спрощення обробки рядків. Хочете дізнатися більше про те, як ці зміни можуть полегшити вашу роботу з фреймворком? Читайте далі

Команда Laravel випустила версію v12.15.0, яка містить підтримку розуміння чисел з локалі, новий рядковий hash() допоміжний метод, можливість впроваджувати контекстні значення атрибутів та інші нововведення:

# Підтримка чисел з локалі

Mbungu Ngoma додав три методи до класу Number для перетворення локалізованих чисел у числові значення. Ці методи використовують клас NumberFormatter з розширення Intl для аналізу і визначення формату:

use Illuminate\Support\Number;

Number::parse($string);
Number::parseInt($string);
Number::parseFloat($string);

// Передати локаль
Number::parseFloat(string: $string, locale: 'de');

// Також можна передати тип для методу parse
Number::parse(
    string: $string,
    type: NumberFormatter::TYPE_INT64,
    locale: 'de',
);

Деталі можна знайти у Pull Request #55725.

# Значення за замовчуванням при отриманні Enum

@elbojoloco додав можливість передавати значення за замовчуванням при отриманні enum через трейти InteractsWithData.php. Наприклад, оновлення включає класи, такі як Request:

// Раніше
$chartType = request()->enum('chart_type', ChartTypeEnum::class) ?: ChartTypeEnum::Bar;

// Тепер
$chartType = request()->enum('chart_type', ChartTypeEnum::class, ChartTypeEnum::Bar);

# Метод TestResponse для перевірки помилок клієнта

@shane-zeng додав метод assertClientError() для тестової відповіді:

// Раніше
$this->assertTrue($response->isClientError());

// Тепер
$response->assertClientError();

# Допоміжний метод hash для рядків

Istiak Tridip додав метод hash() до класу Stringable для спрощення хешування рядків:

$appId = str('secret-unique-key')
    ->hash('xxh3')
    ->take(10)
    ->prepend('app-');
// app-0fb8aac18c

До версії Laravel v12.15 для цього використовувався метод ->pipe(), який спрощено за допомогою hash():

// Раніше потрібно було вручну передавати рядок у метод хешування
$appId = str('secret-unique-key')
    ->pipe(fn(Stringable $str) => hash('xxh3', (string) $str))
    ->take(10)
    ->prepend('app-');

Деталі впровадження можна знайти в Pull Request #55767.

# Додавання current_page_url до Paginator

Mario Juárez додав current_page_url до Paginator:

$paginator->toArray()['current_page_url'];

# Перевірка редиректу на дію

Volodya Kurshudyan додав метод assertRedirectToAction() для перевірки редиректу на певну дію контролера:

$this->get('redirect-to-index')
    ->assertRedirectToAction([TestActionController::class, 'index']);

# Використання контекстних значень як атрибутів

Martin Bean додав атрибут #[Context()], який можна використовувати для впровадження значення контексту. Приклад з pull request демонструє повторне використання значення, визначеного у контексті:

use App\Models\User;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\Context;

class UserSeeder extends Seeder
{
    public function run(): void
    {
        $user = User::factory()->create();

        // Зберегти дані контексту для подальших сідерів...
        Context::add('user', $user);
    }
}

// Повторне використання контексту `$user` в ChannelSeeder
use App\Models\Channel;
use App\Models\User;
use Illuminate\Container\Attributes\Context;
use Illuminate\Database\Seeder;

class ChannelSeeder extends Seeder
{
    public function run(
        // Отримуємо дані контексту з типізуванням...
        #[Context('user')] User $user,
    ): void {
        $channel = Channel::factory()->create();

        $channel->users()->attach($user);
    }
}

Деталі впровадження можна знайти в Pull Request #55760.

# Нотатки про випуск

Ви можете ознайомитися з повним списком нових функцій і оновлень, а також з порівнянням 12.14.0 та 12.15.0 на GitHub. Нотатки про випуск безпосередньо з журналу змін:

# v12.15.0

Популярні

Logomark Logotype

Використання повнотекстового пошуку в Laravel

Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом

Logomark Logotype

Як задокументувати кілька API в Laravel за допомогою Scramble

Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше

Logomark Logotype

Nuxt 3 + Laravel Sanctum: Просте та надійне рішення для автентифікації вашого SPA та API

У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту