Kategorien
PHP PHP 7

PHP: Parse Error: syntax error, unexpected ‚:‘, expecting ‚;‘ or ‚{‚

Bei der sehr kryptischen  Fehlermeldung

Parse Error: syntax error, unexpected ':', expecting ';' or '{'

handelt es sich in den meisten Fällen um eine PHP7 Inkompatibilität.

Der auszuführende Code enthält ein Sprach-Feature, was erst unter PHP7 verfügbar ist:

Return Type Definitions (Definition des Rückgabewertes). Beispiel:

function myFuntion($input): array
{
    return ['foo'];
}

Damit kann man festelegen, dass die Funktion ein Array zurückgeben muss, sonst wird ein TypeErrror ausgelöst.

Um den Code in einer niedrigeren PHP Version zum Laufen zu bringen, muss man die Return Type Definition entfernen:

function myFuntion($input)
{
    return ['foo'];
}

Spezialfall: composer

Bei mir kam dazu, dass es sich nciht um Code von mir handelte, sondern über Abhängigkeiten, die ich mit compser installiert hatte.
Typischerweise hat man bei composer die Minimum Version eingestellt von PHP:

"php": ">=5.6",

Es kann aber auch Sinn machen, die PHP-Version zu konfigurieren um Probleme zu vermeiden:

"config": {
    "platform": {
        "php": "5.6"
    }
},