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 4
function中でjQuery絡みの$(‘…’)の箇所を解釈しようとしてエラーになっているらしい。
試しに、同じ個所を
対策1
var obj = function(){1+$('#foo').text('OK');}
とすると問題なく出力されて、JavaScriptも動作する。
PHP側のヒアドキュメント側での変数展開の問題かと思いついて、次のようにエスケープすると
対策2
var obj = function(){\$('#foo').text('OK');}
これも問題なく出力されて、JavaScriptも動作した。
ヒアドキュメントでの変数展開の理解不足が根本原因そうだが、不要な式が入ってこない後者(対策2)のほうがいいのかな。