suchen

Heim  >  Fragen und Antworten  >  Hauptteil

PHP verwendet ENUM in Eigenschaften

<p>Sehen Sie sich den folgenden Code an: </p> <pre class="brush:php;toolbar:false;"><?php Aufzählungstypen: string { Fall A = 'a'; Fall B = 'b'; } #[Attribute(Attribute::TARGET_CLASS)] Klasse MyAttribute { öffentliche Funktion __construct(öffentliches schreibgeschütztes Array $mapping) { } } #[MyAttribute(mapping: [Types::A->value => ''])] Klasse Entität { } </pre> <p>Fehler <code>Konstanter Ausdruck enthält ungültige Operation</code>. Ich möchte Enum-Werte in meinen Eigenschaften verwenden, um die Konfiguration zu definieren. Es sieht so aus, als wäre das ein Fehler in PHP. Sollte es gemeldet werden oder was? </p>
P粉593118425P粉593118425444 Tage vor506

Antworte allen(1)Ich werde antworten

  • P粉536532781

    P粉5365327812023-08-27 12:10:24

    问题是,当我们调用 Types::A->value 时,它​​实际上创建了一个枚举的实例,它不是一个常量值。 为了解决这个问题,定义一个常量并引用它。

    <?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 {
    
    }
    

    注意这个php 中的问题

    Antwort
    0
  • StornierenAntwort