Переменная постоянной строки класса PHP, охватывающая по нескольким строкам

Я хочу иметь строковую переменную для класса PHP, который был бы доступен всем методам.

Однако эта переменная довольно длинна, таким образом, я хочу разделить ее на несколько строк.

Например,

$variable = "line 1" .
            "line 2" .
            "line 3";

Но выше не работает.

Я попробовал EOD, но EOD не позволяется в классе. И когда я объявляю это вне класса, я не могу получить доступ к переменной из класса.

Каков лучший способ?

11
задан Anthony Forloney 9 April 2010 в 04:45
поделиться

2 ответа

Если вы используете PHP> = 5.3 , вы можете использовать синтаксис HEREDOC для объявления своей строки:

class MyClass {
    public $str = <<<STR
this is
a long
string
STR;

}

$a = new MyClass();
var_dump($a->str);

Но это:

  • возможно только с PHP> = 5.3
  • , и строка не должна содержать никаких переменных
    • это потому, что значение строки должно быть известно во время компиляции
    • , что, кстати, объясняет, почему конкатенация с . , работать не будет: выполняется во время выполнения.

И еще один недостаток состоит в том, что при этом в строку будут помещены символы новой строки, что может быть или нет, плохо.


Если вы используете PHP <= 5.2 :

Вы не можете этого сделать; решением может быть инициализация строки в конструкторе вашего класса:

class MyClass {
    public $str;
    public function __construct() {
        $this->str = <<<STR
this is
a long
string
STR;
    }
}

(то же самое, но не с новой строкой)

Или здесь вы можете выполнить конкатенацию строк:

class MyClass {
    public $str;
    public function __construct() {
        $this->str = 'this is' .
                     'a long' .
                     'string';
    }
}

(таким образом, без новой строки)


Else , вы можете создать строку, заключенную в одинарные или двойные кавычки, и поместить ее в несколько строк:

class MyClass {
    public $str = "this is
a long
string";
}

(Здесь снова у вас будет новая строка в результирующей строке)

10
ответ дан 3 December 2019 в 09:19
поделиться
$var = "this is a really long variable and I'd rather have it " .
 "span over multiple lines for readability sake. God it's so hot in here " .
 "can someone turn on the A/C?";
echo $var;

Какие результаты:

это действительно длинная переменная, и я бы предпочел, чтобы она занимала несколько строк для удобства чтения. Боже, здесь так жарко, может кто-нибудь включить кондиционер?

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

2
ответ дан 3 December 2019 в 09:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: