我喜欢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();
...
...
...
Run Code Online (Sandbox Code Playgroud)
你明白我的意思了.
现在使用正常的HEREDOC可能无法解决这个问题.有没有人解决这个问题?我的梦想是使用HEREDOC语法进行自动缩进.但我想如果不为源文件编写一些预编译器,这是不可能的.
我对么?
Pas*_*TIN 11
这也是我经常遇到的一个问题:当我使用heredoc时代码没有很好地缩进,我真的很喜欢heredoc :-(
一个"更大"的问题是,当您选择整个代码块时,按"tab" (或IDE中的任何等效代码)更多地缩进它,因为您添加了条件或其他任何东西......并且它打破了heredoc字符串:你必须用手去缩进它们:-(
不幸的是,我从来没有见过像你所描述的任何工具......
我想,一个解决方案是将heredoc字符串放在另一个文件中,然后包含它 - 包含就像可以正常缩进; 但它也意味着要加载一个文件,这会使代码不那么清晰.
仅供参考,这并不能解决您的问题,但Ruby编程语言支持缩进的heredoc.
您可能希望向PHP开发人员发送功能请求,并使用Ruby文档作为示例来证明现有语言可以解决此问题,那么为什么不用PHP呢?
谢天谢地,此功能最终通过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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7681 次 |
| 最近记录: |