Как преобразовать аннотацию symfony gedmo в атрибуты PHP 8

Я работаю над проектом 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 в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
85
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

вам нужно будет сделать все свойство класса с атрибутами. свойство fields в slug должно быть массивом.

#[\Gedmo\Mapping\Annotation\Slug(fields: ['name'])]
#[\Doctrine\ORM\Mapping\Column(
    type: 'string',
    length: 255,     
)]

возможно, вы хотите проверить, может ли ректор помочь вам автоматически преобразовать ваши аннотации в атрибуты. см. getrector.com/blog/how-to-upgrade-annotations-to-attributes

wolxXx 24.01.2023 07:19

я получил ошибку о полях: неизвестные именованные поля параметров

Khaled Boussoffara 24.01.2023 11:29
github.com/doctrine-extensions/DoctrineExtensions/blob/main/‌​doc/… дает вам хороший обзор, хорошие примеры
wolxXx 24.01.2023 11:32
Ответ принят как подходящий

Ректор это поддерживает. Правило исходит из ректора-учения, которое входит в стандартный метод установки.

Следуйте инструкциям по установке 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;

Другие вопросы по теме