我试图让一个静态类变量在类构造函数中的HEREDOC表达式内展开/解析,但我找不到让它工作的方法。请看下面我非常简化的例子:
class foo {
private static $staticVar = '{staticValue}';
public $heredocVar;
public function __construct() {
$this->heredocVar = <<<DELIM
The value of the static variable should be expanded here: {self::$staticVar}
DELIM;
}
}
// Now I try to see if it works...
$fooInstance = new foo;
echo $fooInstance->heredocVar;
这导致以下输出:
The value of the static variable should be expanded here: {self::}
此外,我尝试了各种方法来引用静态变量,但没有运气。我正在运行 PHP 5.3.6 版。
编辑
正如 Thomas 所指出的,可以使用实例变量来存储对静态变量的引用,然后在 HEREDOC 中使用该变量。以下代码很难看,但确实有效:
class foo {
private static $staticVar = '{staticValue}';
// used to store a reference to $staticVar
private $refStaticVar;
public $heredocVar;
public function __construct() {
//get the reference into our helper instance variable
$this->refStaticVar = self::$staticVar;
//replace {self::$staticVar} with our new instance variable
$this->heredocVar = <<<DELIM
The value of the static variable should be expanded here: $this->refStaticVar
DELIM;
}
}
// Now we'll see the value '{staticValue}'
$fooInstance = new foo;
echo $fooInstance->heredocVar;