PHPからのJavaScript出力でエラー
PHPスクリプト中のヒアドキュメントでJavaScriptを出力させようとして、次のようにするとエラーになってしまう:
<?php
print <<<EOF
<script type="text/javascript">
var obj = function(){$('#foo').text('OK');}
</script>
EOF;実行結果(エラー)
PHP Parse error: syntax error, unexpected '(', expecting T_VARIABLE or '$' in /tmp/foo.php on line 4function中でjQuery絡みの$(‘…’)の箇所を解釈しようとしてエラーになっているらしい。
試しに、同じ個所を
対策1
var obj = function(){1+$('#foo').text('OK');}とすると問題なく出力されて、JavaScriptも動作する。
PHP側のヒアドキュメント側での変数展開の問題かと思いついて、次のようにエスケープすると
対策2
var obj = function(){\$('#foo').text('OK');}これも問題なく出力されて、JavaScriptも動作した。
ヒアドキュメントでの変数展開の理解不足が根本原因そうだが、不要な式が入ってこない後者(対策2)のほうがいいのかな。