Команда 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.
@elbojoloco додав можливість передавати значення за замовчуванням при отриманні enum через трейти InteractsWithData.php. Наприклад, оновлення включає класи, такі як Request
:
// Раніше
$chartType = request()->enum('chart_type', ChartTypeEnum::class) ?: ChartTypeEnum::Bar;
// Тепер
$chartType = request()->enum('chart_type', ChartTypeEnum::class, ChartTypeEnum::Bar);
@shane-zeng додав метод assertClientError()
для тестової відповіді:
// Раніше
$this->assertTrue($response->isClientError());
// Тепер
$response->assertClientError();
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.
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. Нотатки про випуск безпосередньо з журналу змін:
assertJsonStructure
& assertExactJsonStructure
від @milwad-dev у https://github.com/laravel/framework/pull/55743getCountForPagination
на Eloquent\Builder від @cosmastech у https://github.com/laravel/framework/pull/55752assertClientError
до TestResponse
від @shane-zeng у https://github.com/laravel/framework/pull/55750preventsLazyLoading
при використанні automaticallyEagerLoadRelationships
від @devajmeireles у https://github.com/laravel/framework/pull/55771hash
для рядків від @istiak-tridip у https://github.com/laravel/framework/pull/55767assertSessionMissing()
для відповідності assertSessionHas()
від @nexxai у https://github.com/laravel/framework/pull/55763current_page_url
до Paginator від @mariomka у https://github.com/laravel/framework/pull/55789assertRedirectToAction
для перевірки редиректу до дій контролера від @xurshudyan у https://github.com/laravel/framework/pull/55788