Команда Laravel випустила версію v12.16.0, в якій додали каст AsUri, прив’язку контекстних сервісів за допомогою атрибутів PHP 8 та багато іншого:
# Каст моделі AsUri
Ash Allen додав каст AsUri, який перетворює значення з і в екземпляр Illuminate\Support\Uri.
use Illuminate\Support\Uri;
use Illuminate\Database\Eloquent\Casts\AsUri;
protected function casts(): array
{
return [
// ...
'destination_url' => AsUri::class,
];
}
// Встановлення URL
$shortUrl->destination_url = new Uri('https://www.example.com:1234/hello?param=value');
$shortUrl->save();
# Контекстна прив’язка інтерфейсів через атрибути
Yitz Willroth додав атрибут Give, який дозволяє використовувати контекстні залежності з атрибутами PHP 8:
// Традиційний підхід - у ServiceProvider
$this->app->when(UserController::class)
->needs(UserRepositoryInterface::class)
->give(DatabaseUserRepository::class);
use Illuminate\Container\Attribute\Give;
// Використання атрибуту Give
class UserController extends Controller
{
public function __construct(
#[Give(DatabaseUserRepository::class)]
private UserRepositoryInterface $userRepository
) {}
}
// Інший приклад
class OrderService
{
public function __construct(
#[Give(StripePaymentProcessor::class)]
private PaymentProcessorInterface $processor
) {}
}
Деталі дивіться у Pull Request #55904.
# Додано метод reorderDesc() до Query Builder
Rihulfa Akbar реалізував метод reorderDesc() для побудови запитів, що дозволяє швидко додавати умову перестановки у зворотному порядку:
// використовуючи reorder()
$this->reorder($column, 'desc');
// reorderDesc()
$query->reorderDesc($column);
# Метод assertRedirectBack перенесено до Laravel 11
Graham Campbell переніс метод assertRedirectBack(), який був доданий у Laravel у v12.13:
$testResponse->assertRedirectBack();
# Примітки до випуску
Ви можете переглянути повний список нових функцій та оновлень нижче, а також різницю між версіями 12.16.0 і 12.17.0 на GitHub. Наступні примітки до випуску взято з журналу змін:
# v12.17.0
- [11.x] Перенесено
TestResponse::assertRedirectBackвід @GrahamCampbell в https://github.com/laravel/framework/pull/55780 - Додано підтримку надсилання сирих (некодованих) вкладень у Resend mail від @Roywcm в https://github.com/laravel/framework/pull/55837
- [12.x] chore: повернення Collection з методів timestamps від @calebdw в https://github.com/laravel/framework/pull/55871
- [12.x] fix: повне уточнення типу повернення колекції від @calebdw в https://github.com/laravel/framework/pull/55873
- [12.x] Виправлення рішення вкладених компонентів Blade для нестандартних просторів імен від @daniser в https://github.com/laravel/framework/pull/55874
- [12.x] Виправлення типів повернення в обробниках команд консолі на void від @michaelnabil230 в https://github.com/laravel/framework/pull/55876
- [12.x] Можливість виконувати статичні виклики вищого порядку на елементах колекції від @daniser в https://github.com/laravel/framework/pull/55880
- Додано допоміжні функції Resource до курсорного пагінатора від @jsandfordhughescoop в https://github.com/laravel/framework/pull/55879
- Додано метод reorderDesc() до Query Builder від @ghabriel25 в https://github.com/laravel/framework/pull/55885
- [11.x] Виправлення застарілих функцій Symfony Console 7.3 в командах на замиканнях від @crynobone в https://github.com/laravel/framework/pull/55888
- [12.x] Додано каст
AsUriмоделі від @ash-jc-allen в https://github.com/laravel/framework/pull/55909 - [12.x] feat: Додано контекстну реалізацію/прив’язку інтерфейсів через атрибут PHP8 від @yitzwillroth в https://github.com/laravel/framework/pull/55904
- [12.x] Додано тести для Middleware
AuthenticateSessionвід @imanghafoori1 в https://github.com/laravel/framework/pull/55900 - [12.x] Дозволено brick/math ^0.13 від @jnoordsij в https://github.com/laravel/framework/pull/54964
- [12.x] fix: Factory::state і ::prependState генерації від @calebdw в https://github.com/laravel/framework/pull/55915