PHP utilisant ENUM dans les propriétés
P粉593118425
P粉593118425 2023-08-26 23:17:00
0
1
497
<p>Regardez le code suivant : </p> <pre class="brush:php;toolbar:false;"><?php enum Types : chaîne { cas A = 'a'; cas B = 'b'; } #[Attribut(Attribut ::TARGET_CLASS)] classe MonAttribut { fonction publique __construct (tableau public en lecture seule $ mappage) { } } #[MonAttribut(mapping : [Types::A->value => ''])] classe Entité { } ≪/pré> <p>Erreur <code> L'expression constante contient une opération non valide</code>. Je souhaite utiliser des valeurs enum dans mes propriétés pour définir la configuration. On dirait que c'est un bug dans php. Faut-il le signaler ou quoi ? </p>
P粉593118425
P粉593118425

répondre à tous(1)
P粉536532781

Le problème est que lorsque nous appelons Types::A->value, cela crée en fait une instance de l'énumération, qui n'est pas une valeur constante. Pour résoudre ce problème, définissez une constante et référencez-la.

<?php

abstract class Type {
    public const A = 'a';
    public const B = 'b';
}

enum TypesEnum:string {
    case A = Type::A;
    case B = Type::B;
}

#[Attribute(Attribute::TARGET_CLASS)]
class MyAttribute {
    public function __construct(public readonly array $mapping)
    {
    }
}

#[MyAttribute(mapping: [Type::A => ''])]
class Entity {

}

Faites attention à ce problème dans php

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!