name => 'Ticket', self::site->name => 'Site', self::project->name => 'Projet', ]; /** * Optionnal tables definition * * This is now a const, so we can't do (new Ticket())->getTable() anymore, * we need to write it as a constant string. */ private const TABLES = [ self::ticket->name => 'tickets', self::site->name => 'sites', self::project->name => 'projects', ]; /** * Get Table * * @return string */ public function table(): string { return self::TABLES[$this->name]; } /** * Get enum tables * * @return array */ public static function toTables(): array { return self::TABLES; } /** * Datas to send with json_encode. * * @return mixed */ public function jsonSerialize(): mixed { return match ($this) { self::ticket => [ 'label' => self::ticket->label(), 'name' => self::ticket->name(), 'value' => self::ticket->value() ], self::site => [ 'label' => self::site->label(), 'name' => self::site->name(), 'value' => self::site->value() ], self::project => [ 'label' => self::project->label(), 'name' => self::project->name(), 'value' => self::project->value() ], }; //end match } }