在回声HTML上保留缩进

时间:2015-12-23 22:03:36

标签: phpstorm

我正在进入PHPStorm并且非常喜欢重新格式化代码的选项。我有我喜欢的方式设置我的一个例外。我经常以这种方式回应HTML。

echo '<section'>;
    echo '<h2>Some Heading</h2>;
    echo '<p>Lorem ipsum dolor sit amet...</p>
echo '</section>';

当我重新格式化代码时,这会将上面的代码清理到这个

echo '<section'>;
echo '<h2>Some Heading</h2>;
echo '<p>Lorem ipsum dolor sit amet...</p>
echo '</section>';

是否可以为PHPSstorm中的任何回显html保留上述格式?任何帮助,将不胜感激。

2 个答案:

答案 0 :(得分:3)

使用heredoc,这会使代码更清晰,不应重新格式化:

<?php
echo <<<EOF
<section>
    <h2>Some Heading</h2>
    <p>Lorem ipsum dolor sit amet...</p>
</section>
EOF;
?>

答案 1 :(得分:3)

PHP在这方面非常强大,你为什么不这样做:

<?php /* do something */ ?>
<section>
    <h2>Some Heading</h2>
    <p>Lorem ipsum dolor sit amet...</p>
</section>
<?php /* do more things */ ?>

您甚至不需要回显HTML。在HTML组件中,您甚至可以访问前面行/文件中使用的范围变量(例如,如果包含此HTML的文件是include d)

如果要捕获稍后要使用的输出,或稍后显示,则使用ob_start()开始输出缓冲,使用$output = ob_get_clean();释放缓冲区并捕获输出。

或者,例如,如果代码在控制器文件中,您可以“包含”文件(它与我上面描述的输出缓冲方法一起工作得非常好),并滚动您自己的模板版本。 / p>

类似的东西:

some_layout.php

<?php /* do something */ ?>
<section>
    <h2>Some Heading</h2>
    <p>Lorem <?=$wow?> dolor sit amet...</p>
</section>
<?php /* do more things */ ?>

controller.php

public function showSomeLayout() {
    $wow = 2;

    ob_start();
    include 'some_layout.php';
    return new SomeResponseObject(ob_get_clean()); // or just print here
}

一个非常巧妙的技巧是你实际上可以include任何类型的文件。例如,如果要将应用程序版本注入DOM中的javascript脚本节点,可以执行以下操作:

index.html

<html>
    <head>
        <script>var appVersion = <?=$v?>;</script>
    </head>
    ...
</html>

包括index.html,当前范围内有$v,会导致$ v被注入页面,并可用于javascript。

(这实际上是一个非常糟糕的例子,但你可以使用.js文件,如果你通过你的应用程序捕获所有请求/管道,并自己提供文件。