Инициализация свойств класса PHP

255
02 октября 2017, 02:24

Вероятно кому-то мой вопрос покажется глупым, и наверное он такой и есть, но извините и не судите строго, такая на первый взгляд очевидная штука как присвоение значения свойству класса вызвала у меня непонимание происходящего, подскажите, как присвоить значение одного свойства класса другому свойству этого же класса, в данном случае компилятор ругается на точку с запятой и я не понимаю почему. Подскажите как это делается правильно?

class Some_class{
  public $var1 = 'some_text';
  public $var2 = $this->var1.'some_text';
}
Answer 1

Как ответил @etki, на момент объявления класса еще нет $this, поэтому $this->var1 еще не существует, и использовать его для инициализации другого свойства еще нельзя.

Однако, если очень хочется, то можно объявить какие-то значения константами, и использовать их при инициализации переменных

class Some_class{
    const MYTEXT = 'some_text';
    public $var1 = self::MYTEXT;
    public $var2 = self::MYTEXT.'some_text';
}
$sc = new Some_class();
var_dump($sc);
Answer 2

PHP поддерживает подобную обработку только в конструкторе:

class Example {
    private $alpha = 1;
    private $beta;
    public function __construct()
    {
        $this->beta = $this->alpha + 1;
    }
}

В данном случае вы только описываете класс, поэтому не можете использовать выражения для указания значений - в этом контексте попросту нету $this, т.к. вы задаете значения по умолчанию еще до того, как дойдет до создания объектов.

READ ALSO
Кириллица fgets() PHP

Кириллица fgets() PHP

Не могу разобраться с кодировкойДанная функция выполняется, и просит запрос ввода

262
GLFW - cannot find -lglfw

GLFW - cannot find -lglfw

Подключил glfw к Code::Blocks , пишет cannot find -lglfw3 причем dll в папке lib-mingw есть

183
boost :: asio server с простыми функциями

boost :: asio server с простыми функциями

ребята, мне действительно нужна ваша помощьЯ изучаю boost :: asio и у меня есть 2 проблемы, которые я не могу делать за день

310
отлов всплывающих подсказок WinAPI

отлов всплывающих подсказок WinAPI

Обычно, всплывающие подсказки реализуются посредством заполнения структуры NOTIFYICONDATA + передачей это структуры в функцию Shell_NotifyIconAЕсли у экземпляра...

269