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>