Команда 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/55788Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом
Ви знали, що в одному додатку Laravel можна реалізувати кілька API? У нашій статті ви дізнаєтеся, як за допомогою Scramble легко документувати різні версії API та налаштувати доступ до документації, щоб зробити її публічною або приватною. Читайте далі, щоб дізнатися більше
У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту