web-dev-qa-db-fra.com

Expression constante contient des opérations non valides

J'ai le code suivant, où j'obtiens l'erreur "Erreur irrécupérable PHP: l'expression constante contient des opérations non valides". Cela fonctionne bien lorsque je définis la variable dans le constructeur. J'utilise le framework Laravel.

<?php

namespace App;

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

    public function __construct()
    {
    }

}
13
Aaron

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 tels que "attributs" ou "champs", mais pour les besoins de cette référence, nous utiliserons "propriétés". Ils sont définis en utilisant l’un des mots-clés public, protected ou private, suivi d’une déclaration de variable normale. Cette déclaration peut inclure une initialisation, mais cette initialisation doit être une valeur constante, c’est-à-dire qu’elle doit pouvoir être évaluée lors de la compilation et ne doit pas dépendre d’informations d’exécution pour être évaluée. 

La seule façon de faire ce travail est: -

<?php

namespace App;

class Amazon
{
  protected $serviceURL;

  public function __construct()
  {
    $this->serviceURL = config('api.Amazon.service_url');
  }
}
32
prateekkathal

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

0
Curos

Une autre alternative de travail que j'ai utilisée est avec boot( ) 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
4givN