我希望有一个PHP类的字符串变量,它可用于所有方法。
但是,这个变量很长,所以我想把它分成多行。
例如,
$variable = "line 1" .
"line 2" .
"line 3";
但上面不起作用。
我尝试过EOD,但是在课堂上不允许EOD。当我在课外声明它时,我无法从类中访问该变量。
什么是最好的方法?
我希望有一个PHP类的字符串变量,它可用于所有方法。
但是,这个变量很长,所以我想把它分成多行。
例如,
$variable = "line 1" .
"line 2" .
"line 3";
但上面不起作用。
我尝试过EOD,但是在课堂上不允许EOD。当我在课外声明它时,我无法从类中访问该变量。
什么是最好的方法?
如果你正在使用 PHP> = 5.3,你可以使用 HEREDOC语法 声明你的字符串:
class MyClass {
public $str = <<<STR
this is
a long
string
STR;
}
$a = new MyClass();
var_dump($a->str);
但是这个 :
.
,将无法工作:它是在执行时完成的。另一个缺点是,这将在字符串中添加换行符 - 这可能是也可能不是坏事。
如果你正在使用 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";
}
(这里,再次,你将在结果字符串中有换行符)
$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;
哪个输出:
这是一个非常长的变量,为了便于阅读,我宁愿让它跨越多行。上帝这么热,在这里可以有人打开A / C吗?
你现在使用的是什么 字符串连接运算符。如果您可以发布有关您的问题的更多信息,一些代码或可能进一步解释 怎么样 它不起作用。更多信息将引导您获得更好的答案。
我使用的是PHP 5.5.9,并且只遇到了类似的问题 class
常量。我想使用一个有点长的字符串作为常量,但我不想要:
我认为这里的解决方案是在Laravel 5脚手架中做了很多事情以及为什么他们一直这样做让我困惑到现在为止。他们做的是这样的:
public static function getLongPropertyString()
{
return 'A a string that can be arbitrarily long and contain as ' .
'many breaks in the code as you want without line breaks ' .
'appearing in the resulting string.';
}
这种方法提供了一个 一成不变 串。你不是通过创建一个严格的 protected
/private
具有getter的变量,因为它在内部仍然是可变的。只更改代码或覆盖可以更改此字符串。另一位专业人士认为,将其设为静态可以为每个类提供一个“实例”。
不幸的是,现在你的代码就是 Class::getProperty()
而不仅仅是 Class::property
。另一个缺点是每次调用函数时都会进行连接,但根据你使用它的方式,这个成本通常可以忽略不计。
如果PHP编译器能够识别出只在编译时已知的值的连接操作可以在编译时运行并且结果被替换(比我更了解的知识,为什么会这样),那将是很酷的。