我正在尝试获取一个静态类变量来扩展/解析 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 中使用that变量。下面的代码很难看,但它确实有效:
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;
最佳答案
怎么样this answer ?
我会设置 $myVar = self::$staticVar;
,然后在 HEREDOC 代码中使用 $myVar
。
关于php - 如何从 PHP 定界符表达式中扩展静态类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12773181/