Constante expression contient des opérations invalides

j'ai le code suivant, où j'obtiens l'erreur "PHP Fatal Error: Constant expression contains invalid operations". Cela fonctionne bien quand je définit la variable dans le constructeur. J'utilise Laravel framework.

<?php

namespace App;

class Amazon
{
    protected $serviceURL = config('api.amazon.service_url');

    public function __construct()
    {
    }

}
11
demandé sur Aaron 2016-11-27 13:24:04

3 réponses

Comme décrit ici

Les variables de membre de classe sont appelées "propriétés". Vous pouvez également les voir Utiliser d'autres termes comme "attributs" ou "champs", mais pour les besoins de cette référence, nous utiliserons "propriétés". Ils sont définis par l'utilisation d'un des mots-clés public, protégé ou privé, suivi d'une déclaration de variable normale. Cette déclaration peut inclure une phase d'initialisation, mais cette initialisation doit être une constante de valeur", c'est, il doit pouvoir être évaluée au moment de la compilation et ne doivent pas dépendre des informations d'exécution afin d'être évalués.

La seule façon que vous pouvez faire ce travail est :-

<?php

namespace App;

class Amazon
{
  protected $serviceURL;

  public function __construct()
  {
    $this->serviceURL = config('api.amazon.service_url');
  }
}
25
répondu prateekkathal 2016-11-27 11:57:50

initialiser les propriétés de la classe n'est pas autorisé de cette façon. Vous devez déplacer l'initialisation dans le constructeur.

0
répondu Curos 2016-11-27 10:30:39

une autre solution de rechange que j'ai utilisée estboot( ) avec Laravel Eloquent:

<?php

namespace App;

class Amazon {
    protected $serviceURL;

    protected static function boot()
    {
        parent::boot();

        static::creating(function ($model){
            $model->serviceURL = config('api.amazon.service_url');
        });
    } }
0
répondu 4givN 2018-07-14 15:46:06