У пресеті laravel для Laravel Pint тепер є правило fully_qualified_strict_types, яке автоматично замінює fully qualified class names (FQCNs) на короткі і додає відповідні use-імпорти. Правило додав Nuno Maduro і застосовується як до коду, так і до PHPDoc-атестацій.
Що робить правило
Якщо ви посилаєтеся на клас через повністю кваліфіковане ім'я, правило перетворює його на коротке ім'я й додає use-імпорт у верхню частину файлу. Наприклад, типова модель Laravel може виглядати так:
class User extends Authenticatable
{
/** @use HasFactory<\Database\Factories\UserFactory> */
use HasFactory, Notifiable;
protected function casts(): array
{
return [
'email_verified_at' => \Illuminate\Database\Eloquent\Casts\Attribute::class,
];
}
}
Після запуску Pint воно перетвориться на:
use Database\Factories\UserFactory;
use Illuminate\Database\Eloquent\Casts\Attribute;
class User extends Authenticatable
{
/** @use HasFactory<UserFactory> */
use HasFactory, Notifiable;
protected function casts(): array
{
return [
'email_verified_at' => Attribute::class,
];
}
}
Правило обробляє FQCNs у підказках типів (type hints), сигнатурах повернення (return types), PHPDoc-тегах (@param, @return, @var, @throws) та вбудованих посиланнях у коді.
Як користуватися
Якщо ваш проєкт використовує стандартний пресет laravel для Pint, правило вже активне. Оновіть Pint і запустіть його:
composer update laravel/pint
./vendor/bin/pint
Якщо ви користуєтеся кастомним пресетом у pint.json, додайте правило вручну:
{
"preset": "psr12",
"rules": {
"fully_qualified_strict_types": {
"import_symbols": true
}
}
}
Параметр import_symbols: true змушує фіксер автоматично додавати use-імпорти для всіх знайдених FQCN, а не лише скорочувати імена, які вже мають відповідний імпорт.
На що звернути увагу
Правило вплине на наявні проєкти при першому запуску Pint після оновлення. Очікуйте одноразовий diff по кодовій базі, коли FQCN будуть замінені імпортами. Зміни косметичні і не впливають на виконання.
Повну документацію правила див. у Symfony PHP-CS-Fixer docs.