我继承了一个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配置为将占位符行之间的所有内容解释为JS,将其余文件解释为带有PHP的HTML?
我知道文件结构非常不幸,但我暂时无法重构...
由于
答案 0 :(得分:1)
至少有两种有趣的可能性...
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>
确保将结束标识符放在行的第一列
当您将文件扩展名从.php
更改为.js.php
时, PhpStorm 还将突出显示 JavaScript 。
我认为该解决方案很好,因为您会永远记住 JavaScript 在您的 PHP 文件中。这必须清除...
这两个解决方案都在 jetbrains.com 上找到。感谢Andriy Bazanov:
答案 1 :(得分:0)
可能不是你想要的,但如果用脚本选项卡包围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>
本文说,您可以使用两个文件扩展来完成类似的操作,而无需使用脚本标记。