【问题标题】:How to convert symfony gedmo annotation to PHP 8 Attributes如何将 symfony gedmo 注释转换为 PHP 8 属性
【发布时间】:2023-02-03 20:00:51
【问题描述】:

我正在从事 Symfony 6 PHP 8 项目,并且正在使用 gedmo doctrine extension 。

我找不到有关将 gedmo 注释转换为 PHP 8 属性的完整文档。

我正在尝试像这样转换:

/**
 * @ORM\Column(type="string", length=255)
 * @Gedmo\Slug(fields={"title"})
 */
private $slug;

#[Gedmo\Slug(fields: title)]

但它不起作用!

我如何将 gedmo 与 PHP 8 属性一起使用?

【问题讨论】:

    标签: php symfony annotations doctrine slug


    【解决方案1】:

    你必须用属性来处理整个类的属性。 slug 的 fields 属性需要是一个数组。

    #[GedmoMappingAnnotationSlug(fields: ['name'])]
    #[DoctrineORMMappingColumn(
        type: 'string',
        length: 255,     
    )]
    

    【讨论】:

    【解决方案2】:

    Rector 支持这个。该规则来自rector-doctrine,它包含在标准安装方法中。

    按照 rector 安装指南并编辑 rector.php 配置以添加所需的规则。

    Rector 还有用于更新 Symfony 的规则集,请参阅rector-symfony

    将 Doctrine 和 Gedmo 注释转换为 PHP 8 属性的示例。

    <?php
    
    declare(strict_types=1);
    
    use RectorConfigRectorConfig;
    use RectorDoctrineSetDoctrineSetList;
    
    return static function (RectorConfig $rectorConfig): void {
    
        $rectorConfig->sets([
            DoctrineSetList::DOCTRINE_CODE_QUALITY,
            DoctrineSetList::ANNOTATIONS_TO_ATTRIBUTES,
            DoctrineSetList::GEDMO_ANNOTATIONS_TO_ATTRIBUTES,
        
        ]);
    };
    

    例如转换这个

    /**
     * @GedmoSlug(fields={"title"})
     * @ORMColumn(length=128, unique=true)
     */
    private $slug;
    

    #[ORMColumn(length: 128, unique: true)]
    #[GedmoSlug(fields: ['title'])]
    private $slug;
    

    【讨论】:

      猜你喜欢
      • 2019-03-10
      • 1970-01-01
      • 2013-02-19
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 2016-09-21
      • 2019-07-15
      • 2015-05-15
      相关资源
      最近更新 更多