跨越多行的 PHP 类常量字符串变量

标签 php variables constants

我想要一个 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/

相关文章:

php - 将代理与 file_get_contents 结合使用

php 从空值创建默认对象?

PHP/MySQL - 同时进行多个查询

c++ - 用宏形成变量名

linux - (GNU) 使用变量查找 -mtime

c# - 在 C# 中声明一个 const double[]?

php - Symfony:覆盖 Symfony 服务(编译器通过)

ruby - 如何使用方法更改局部变量值?

Mysql选择双常量

ios - 从一个函数引用另一个函数中的常量