Можно ли определить свойство класса PHP и присвоить значение динамически с использованием свойства внутри одного класса? Что-то вроде:
class user { public $firstname = "jing"; public $lastname = "ping"; public $balance = 10; public $newCredit = 5; public $fullname = $this->firstname.' '.$this->lastname; public $totalBal = $this->balance+$this->newCredit; function login() { //some method goes here! } }
Урожайность:
Ошибка анализа: синтаксическая ошибка, неожиданный «$ this» (T_VARIABLE) в строке 6
Что-то не так в приведенном выше коде? Если да, пожалуйста, помогите мне, и если это невозможно, то что это хороший способ сделать это?
Вы можете поместить его в конструктор следующим образом:
public function __construct() { $this->fullname = $this->firstname.' '.$this->lastname; $this->totalBal = $this->balance+$this->newCredit; }
Почему ты не можешь так поступать так, как ты хотел?
Цитата из руководства объясняет это:
Это объявление может включать в себя инициализацию, но эта инициализация должна быть постоянным значением – то есть она должна быть способна быть оценена во время компиляции и не должна зависеть от информации о времени выполнения для оценки.
Для получения дополнительной информации о свойствах ООП см. Руководство: http://php.net/manual/en/language.oop5.properties.php
Нет, вы не можете установить такие свойства.
Однако: вы можете установить их в конструкторе, чтобы они были доступны, если кто-то создает экземпляр класса:
public function __construct() { $this->fullname = $this->firstname . ' ' . $this->lastname; }