Вызовите переменную внутри класса из другой переменной - PullRequest
0 голосов
/ 04 января 2019

У меня есть следующий код:

<?php
class myclass {
    public $var;
    public $foo = $this->var;
}
// ...etc

Когда я выполняю это, я получаю следующую ошибку:

(!) Неустранимая ошибка: выражение константы содержит недопустимые операции в E: \ public_html \ index.php в строке 4

Как я могу назвать эту переменную не вне класса? (Я имею в виду, я не хочу определять это следующим образом):

$myclass = new myclass();
$myclass->foo = $myclass->var;

1 Ответ

0 голосов
/ 04 января 2019

Переменные класса могут быть определены только с постоянными значениями.

Чтобы сделать динамическое назначение, вам нужно сделать это в конструкторе:

class myclass {
    public $var = "Hey there";
    public $foo;

    public function __construct()
    {
         $this->foo = $this->var;
    }
}

После создания экземпляра этого класса $foo будет иметь значение «Привет!».

Из документов :

Переменные-члены класса называются «свойствами». Вы также можете видеть, что они упоминаются с использованием других терминов, таких как «атрибуты» или «поля», но для целей данной ссылки мы будем использовать «свойства». Они определяются с использованием одного из ключевых слов public, protected или private, за которым следует обычное объявление переменной. Это объявление может включать в себя инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть в состоянии быть оцененной во время компиляции и не должна зависеть от информации времени выполнения для оценки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...