PHP使用<<< EOFstring中的Gettext

我使用PHP的EOFstring来格式化HTML内容,而没有必须逃避引号的麻烦等。我如何使用这个string中的函数?

<?php $str = <<<EOF <p>Hello</p> <p><?= _("World"); ?></p> EOF; echo $str; ?> 

就我在手册中看到的 ,不可能在HEREDOCstring中调用函数。 一个麻烦的方法是预先准备好这些词:

 <?php $world = _("World"); $str = <<<EOF <p>Hello</p> <p>$world</p> EOF; echo $str; ?> 

想到一个解决方法的想法是build立一个神奇的getter方法的类 。

你会像这样声明一个类:

 class Translator { public function __get($name) { return _($name); // Does the gettext lookup } } 

在某个点初始化类的一个对象:

  $translate = new Translator(); 

然后,您可以使用以下语法在HEREDOC块中执行gettext查找:

  $str = <<<EOF <p>Hello</p> <p>{$translate->World}</p> EOF; echo $str; ?> 

$translate->World将自动被翻译成gettext查找感谢神奇的getter方法。

要将这种方法用于带有空格或特殊字符的单词(例如名为“ Hello World!!!!!!的gettext条目,则必须使用以下表示法:

  $translate->{"Hello World!!!!!!"} 

这是所有未经testing,但应该工作。

更新 :作为@mario发现,毕竟有可能从HEREDOCstring调用函数。 我认为使用这样的getter是一个圆滑的解决scheme,但使用直接函数调用可能会更容易。 看到如何做到这一点的意见。

据我所知,你只是误添了heredoc
这里不需要使用丑陋的heredoc语法。
只要删除它,一切都将工作:

 <p>Hello</p> <p><?= _("World"); ?></p>