Vous ne pouvez pas utiliser une expression pour initialiser une propriété de classe. Il doit s'agir d'une valeur constante ou vous devez l'initialiser dans le constructeur. C'est la source de votre erreur de syntaxe.
class myObj {
public $birth_month;
public $birthday;
// Initialize it in the constructor
public function __construct($birth_month) {
$this->birth_month = $birth_month;
$this->birthday = array('input_val' => $this->birth_month);
}
}
From the docs on class properties:
Ils sont définis en utilisant l'un des mots-clés publics, protégés ou privés, suivie 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 au moment de la compilation et ne pas dépendre des informations d'exécution pour être évaluée.
Dans votre première tentative, en utilisant $this
en dehors d'une méthode d'instance n'aurait pas été pris en charge même mettant à nu la limitation de la compilation de l'initialisation de la propriété, puisque $this
n'a de sens que dans les méthodes d'instance.