我继承了一个PHP项目,该项目包含几个具有以下结构的HTML文件
<?php $this->placeholder('dom.ready')->captureStart(); ?>
var some = javascript.goesHere();
<?php $this->placeholder('dom.ready')->captureEnd(); ?>
<div class="some html goes here">
<h1> <?php echo "with some php in the middle"; ?> </h1>
</div>
是否可以配置Phpstorm,用一些PHP将占位符行之间的所有内容解释为JS,将文件的其余部分解释为HTML?
我知道文件结构非常糟糕,但我现在无法重构它。。。
感谢
至少有两种有趣的可能性。。。
1.Heredoc注释
https://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc
对我来说,最有趣的解决方案是使用heredoc语法将JavaScript转换为PHP字符串:
<div>
<div>
<?php $this->placeholder('dom.ready')->captureStart(); ?>
<?= <<<JS
var some = javascript.goesHere();
JS
?>
<?php $this->placeholder('dom.ready')->captureEnd(); ?>
</div>
</div>
确保将结束标识符放在第行的第一列
2.更改文件名
当您将文件扩展名从.php
更改为.js.php
时,PhpStorm还会突出显示您的JavaScript。
我认为这个解决方案很好,因为您将永远记住JavaScript在PHP文件中。这必须被清除。。。
这两种解决方案都可以在jetbrains.com上找到。感谢Andriy Bazanov:
https://intellij-support.jetbrains.com/hc/en-us/community/posts/207046645-Zend-framework-and-code-formating-in-view-files
https://intellij-support.jetbrains.com/hc/en-us/community/posts/115000790544-Syntax-Highligth-on-some-special-cases
可能不是你真正想要的,但如果你用脚本选项卡包围javascript,phpstorm会将其解释为js。你需要更改你的代码,使其看起来像:
<script>
<?php $this->placeholder('dom.ready')->captureStart(); ?>
var some = javascript.goesHere();
<?php $this->placeholder('dom.ready')->captureEnd(); ?>
</script>
<div class="some html goes here">
<h1> <?php echo "with some php in the middle"; ?> </h1>
</div>
本文介绍了在不使用脚本标记的情况下,可以使用两个文件扩展名来完成类似的任务。
https://confluence.jetbrains.com/display/PhpStorm/Syntax+突出显示+PHP+内部+JavaScript+(和+其他+语言)