«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2019/08/12 13:43:47  №1452005 1
Можно ли как-то задать свойство класса с помощью метода? Ну или ещё как-то вынести значение из текста программы в иное место?

Вот код: https://pastebin.com/VYB6rxjP
Там токен = 666666666. Но мне нужно, чтобы этот токен брался вообще не из кода, а из конфига, который в базе (достаётся из неё через getToken() ). Но если написать вместо protected $token = "666666666"; что-то типа protected $token =$this->getToken();, то пхп на меня смотрит очень укоризненно.
Ответы: >>1452006 >>1452115
Аноним 2019/08/12 13:46:01  №1452006 2
>>1452005
В конструктор инициализацию полей вынеси, он затем и нужен
Ответы: >>1452056
Аноним 2019/08/12 15:13:36  №1452056 3
>>1452006
Там в исходном классе уже есть конструктор (я просто его не показал). И когда вставляю в него $token =$this->getToken();, код не работает. Получается, это у меня где-то там косяк и так и надо было делать?
Ответы: >>1452070
Аноним 2019/08/12 15:46:28  №1452070 4
>>1452056
>$token =$this->getToken()
может всё такие $this->token?
или вообще сделай метод initToken() и вызывай его в конструкторе. Если ты наследуешь то не забывай про parent::__construct()
Ответы: >>1452130
Аноним 2019/08/12 17:31:16  №1452115 5
>>1452005
Если доступ к полю происходит через метод-геттер (в твоем примере aa() ) то просто переопределяешь этот метод в наследуемом классе чтобы он возвращал то что нужно (это одна из причин почему желательно использовать геттеры а не напрямую поля дергать). Если поле используется напрямую $this->token тогда нужно добавлять магии __get https://ideone.com/TPS1f7
Ответы: >>1452133
Аноним 2019/08/12 18:07:32  №1452130 6
>>1452070
>может всё такие $this->token?
Да, точно. Вызываю в конструкторе вот так:
$this->token = $this->getToken();
И в тестовом примере оно работает. А вот в коде, который модифицирую - нет. Завтра буду много думать.
Аноним 2019/08/12 18:19:58  №1452133 7
>>1452115
Спасибо, завтра попробую.