Я работаю над проектом Symfony 6 PHP 8 и использую расширение доктрины gedmo.
Я не могу найти полную документацию о преобразовании аннотации gedmo в атрибуты PHP 8.
Я пытаюсь конвертировать так:
/**
* @ORM\Column(type = "string", length=255)
* @Gedmo\Slug(fields = {"title"})
*/
private $slug;
#[Gedmo\Slug(fields: title)]
но это не работает!
Как я могу использовать gedmo с атрибутами PHP 8?
🤔 А знаете ли вы, что...
PHP поддерживает расширения для работы с множеством сторонних сервисов и API.
вам нужно будет сделать все свойство класса с атрибутами. свойство fields в slug должно быть массивом.
#[\Gedmo\Mapping\Annotation\Slug(fields: ['name'])]
#[\Doctrine\ORM\Mapping\Column(
type: 'string',
length: 255,
)]
Ректор это поддерживает. Правило исходит из ректора-учения, которое входит в стандартный метод установки.
Следуйте инструкциям по установке rector и отредактируйте конфигурацию rector.php, чтобы добавить необходимые правила.
В Rector также есть наборы правил для обновления Symfony, чтобы увидеть rector-symfony.
Пример преобразования аннотации Doctrine и Gedmo в атрибуты PHP 8.
<?php
declare(strict_types=1);
use Rector\Config\RectorConfig;
use Rector\Doctrine\Set\DoctrineSetList;
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->sets([
DoctrineSetList::DOCTRINE_CODE_QUALITY,
DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
DoctrineSetList::GEDMO_ANNOTATIONS_TO_ATTRIBUTES,
]);
};
например преобразует это
/**
* @Gedmo\Slug(fields = {"title"})
* @ORM\Column(length=128, unique=true)
*/
private $slug;
к
#[ORM\Column(length: 128, unique: true)]
#[Gedmo\Slug(fields: ['title'])]
private $slug;