Перетворення властивостей моделі в екземпляри URI в 12.17

0
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 05 червня, 2025
Останнє оновлення Laravel 12.16.0 привнесло безліч нововведень, зокрема кастинг моделей з використанням `AsUri` та контекстне зв'язування сервісів за допомогою атрибутів PHP 8. Досліджуйте ці нові можливості у нашій статті та дізнайтеся, як вони можуть покращити ваші проекти

Команда 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

Популярні

Logomark Logotype

Оптимізація запитів до бази даних за допомогою скорочених методів Laravel

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

Logomark Logotype

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

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

Logomark Logotype

"SQLSTATE[HY000] [2002] Connection refused" у Laravel в GitHub Actions

Чи стикалися ви з помилкою «SQLSTATE[HY000] [2002] Connection refused» під час налаштування GitHub Actions для вашого додатку на Laravel? У нашій статті ми розглянемо три поширені причини цієї помилки та надамо рішення для їх усунення. Читайте далі, щоб дізнатися, як ваш CI/CD потік може працювати бездоганно!