У меня есть следующий код, где я получаю сообщение об ошибке «PHP Fatal Error: константное выражение содержит недопустимые операции». Он отлично работает, когда я определяю переменную в конструкторе. Я использую структуру Laravel.
<?php namespace App; class Amazon { protected $serviceURL = config('api.amazon.service_url'); public function __construct() { } }
Как описано здесь
Переменные элемента класса называются «свойствами». Вы также можете увидеть, как они ссылаются на другие термины, такие как «атрибуты» или «поля», но для целей этой ссылки мы будем использовать «свойства». Они определяются с использованием одного из ключевых слов public, protected или private, за которым следует объявление нормальной переменной. Это объявление может включать инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть способна быть оценена во время компиляции и не должна зависеть от информации о времени выполнения для оценки.
Единственный способ сделать эту работу: –
<?php namespace App; class Amazon { protected $serviceURL; public function __construct() { $this->serviceURL = config('api.amazon.service_url'); } }
Инициализация свойств класса не допускается таким образом. Вы должны переместить инициализацию в конструктор.