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()
{
}
}
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');
}
}
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.
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');
});
} }