HEREDOC 干扰代码缩进

2022-08-30 16:38:35

我喜欢HEREDOC语法,例如,对于不值得放入模板的生成的HTML的边缘情况。

然而,唯一让我烦恼的是,内容和heredoc字符串的结束标记粘附在第一列上。这搞砸了嵌套代码布局:

class myclass 
 { 

    function __construct()
      { 
       $a = some_code();
       $b = some_more_code();
       $x = <<<EOT

line1
line2
line3
line4

EOT;    

        $c = even_more_code();
        $b = still_more_code();
        ...
        ...
        ...

你明白我的意思。

现在,使用正常的HEREDOC可能无法解决这一问题。有没有人解决这个问题?我的梦想是拥有具有自动缩进功能的HEREDOC语法。但是我想,如果不为源文件编写一些预编译器,这是不可能的。

我说的对吗?


答案 1

谢天谢地,这个功能终于通过RFC登陆了php 7.3:灵活的Heredoc和Nowdoc语法

所以现在你的例子可以清楚地写成:

class myclass
{
    function __construct()
    {
        $a = some_code();
        $b = some_more_code();
        $x = <<<EOT

        line1
        line2
        line3
        line4

        EOT;

        $c = even_more_code();
        $b = still_more_code();
    }
}

答案 2

这也是我经常遇到的一个问题:当我使用heredoc时,代码没有很好地缩进,我真的很喜欢heredoc:-(

一个“更大”的问题是,当您选择整个代码块时,按“tab”(或IDE中的任何等效项)以使其缩进更多,因为您添加了一个条件或任何东西...它打破了遗传弦:你必须用手取消缩进它们:-(

不幸的是,我从未见过任何像你所描述的工具......


我想,一个解决方案是将heredoc字符串放在另一个文件中,并包含它 - 包含类似可以正常缩进 ;但这也意味着要加载一个文件,这将使代码不太清晰。


推荐