Visualizzazione risultati 1 fino 2 di 2

Discussione: enum php8 ed errori di sintassi

  1. #1
    Data registrazione
    09-12-2022
    Messaggi
    4

    Predefinito enum php8 ed errori di sintassi

    non so se è già capitato a qualcuno, ma io non riesco a trovarne una ragione, poiche tutto funziona sul server locale ma poi non va bene quando lo provo in altervista.
    dunque: ho questa enum:
    Codice:
    <?php
    namespace App\Models\enums;
    
    
    enum PersonType:int
    {
        case Atleta=41;
        case Club=42;
        case Altro=43;
        case Fornitore=44;
        case Contatto=45;
        
        public static function getLabel(self $value):string
        {
            return match($value)
            {
                PersonType::Atleta=>'Atleta',
                PersonType::Club=>'Clubs o Enti',
                PersonType::Contatto=>'Contatto',
                PersonType::Fornitore=>'Ditta fornitrice',
                PersonType::Altro=>'Altri tipi'
            };
        }
    }
    questo è il metodo che la richiama:
    Codice:
    use App\Models\enums\PersonType;
    
    ...
    
        public function showCreate()
        {
            if (!empty($_SESSION['message'])){
                $info=getPartials('_message');
            }else{
                $info=null;
            }
            $this->personVM->Tipo=41;
            $this->content=view('persons'.DIRECTORY_SEPARATOR.'create',[
                            'info'=>$info,
                            'personVM'=>$this->personVM,
                            'types'=>PersonType::cases()
                            ]);
        }
    questo il frammento di view che dovrebbe mostrare il contenuto:
    Codice:
            <div class="col">
                <select class="select form-select-sm" name="Tipo" id="tipo" value="<?=$personVM->Tipo?>" 
                        onchange="document.form.searchForm.submit()">
                   <?php foreach($types as $type){?>
                    <option value="<?=$type->value?>"><?=$type::getLabel($type)?></option>
                   <?php }?>
                </select>
            </div>
    questo funziona sul mio computer ma quando provo a farlo girare sul server Altervista viene fuori questo errore:

    Codice PHP:
    Parse error: syntax error, unexpected identifier "PersonType" in /membri/isolaverdebasketit/app/models/enums/PersonType.php on line 5
    , per la cronaca la linea 5 contiene:enum PersonType:int.

    C'è qualcuno che ha affrontato un simile problema? (php ver 8.0)

  2. #2
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    PHP supporta enum a partire dalla versione 8.1. AlterVista al momento mette a disposizione la 8.0.26, quindi niente enum per il momento.

    Ignoro quale sia il calendario degli aggiornamenti, ma è probabile che 8.1 od 8.2 appaiano nei prossimi mesi: restano solo 10 mesi di supporto per 8.0.

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •