我想要一个 PHP 类的字符串变量,它可用于所有方法。
但是,这个变量很长,所以我想把它分成多行。
例如,
$variable = "line 1" .
"line 2" .
"line 3";
但以上不起作用。
我试过 EOD,但是 EOD 在类里面是不允许的。当我在类外声明它时,我无法从类内访问该变量。
什么是最好的方法?
最佳答案
如果您使用的是 PHP >= 5.3,您可以使用 HEREDOC syntax声明你的字符串:
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';
}
}
(这样,没有换行符)
否则,您可以使用单引号或双引号括起的字符串,并将其放在多行中:
class MyClass {
public $str = "this is
a long
string";
}
(这里,再一次,您将在结果字符串中有换行符)
关于跨越多行的 PHP 类常量字符串变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2605129/