Как выполнить конкатенацию текста в переменных объекта в PHP? - PullRequest
4 голосов
/ 19 февраля 2011

Если я использую «точку» для присвоения значения переменной в классе PHP, произойдет сбой.

Например:

class bla {
       public $a = 'a' . 'b';
}

Как мне подойти к этому иначе?

Ответы [ 2 ]

9 голосов
/ 19 февраля 2011

Это можно сделать только в конструкторе, поскольку переменные / свойства класса должны быть инициализированы при объявлении с помощью константных выражений. Из руководства :

Это объявление может включать в себя инициализацию, но эта инициализация должна быть постоянным значением, то есть она должна быть в состоянии быть оцененной во время компиляции и не должна зависеть от информации времени выполнения для оценки.

Это означает, что вы не можете использовать операторы или вызовы функций.

class bla {
    public $a;

    public function __construct() {
        $this->a = 'a' . 'b';
    }
}
2 голосов
/ 25 июня 2015

Я пытался точно так же:

class someClass{
    public $var = APP . DIRECTORY_SEPARATOR . "someFolder";
}

Это, однако, работало на моей локальной машине, но не на сервере. После проклятия более часа и не найдя подсказки, я вспомнил, что на моей локальной машине была установлена ​​более новая версия XAMPP и, следовательно, другая версия PHP. Таким образом, кажется, что в версии PHP 5.5.11 это было невозможно, но в версии 5.6.8 вы действительно можете комбинировать строки.

Я только что установил новую версию XAMPP на тестовом сервере, чтобы проверить, так ли это на самом деле.

...