2

我试图让一个静态类变量在类构造函数中的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;
4

1 回答 1

2

这个答案呢?

我会设置$myVar = self::$staticVar;然后$myVar在 HEREDOC 代码中使用。

于 2012-10-07T22:02:02.013 回答