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