Utiliser des constantes de classe dans les annotations Doctrine

Publié le 07/11/2019 • Mis à jour le 07/11/2019

English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧

C'est une petite astuce permettant d'éviter de mettre en dur des valeurs dans les annotations Doctrine. Par exemple, c'est utile lorsque on a une contrainte de taille qui peut être partagée parmi plusieurs champs et entités. On peut aussi utiliser ces constantes pour créer les contraintes de formulaire. Veuillez noter qu'elles doivent être publiques sous peine d'avoir une erreur.


<?php declare(strict_types=1);

// src/Entity/ArticleType.php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="App\Entity\ArticleTypeRepository")
 */
class ArticleType extends BaseEntity
{
    public const LABEL_MAX_LENGTH = 50; // must be public!

    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="label", type="string", length=App\Entity\ArticleType::LABEL_MAX_LENGTH, nullable=false)
     *
     * Or the short notation is possible in this case:
     * #@ORM\Column(name="label", type="string", length=ArticleType::LABEL_MAX_LENGTH, nullable=false)
     */
    private $label;


 Plus sur Stackoverflow   Lire la doc