JavaScriptを使用したスクリプトを記述していて、条件による分岐を いちいち記述していくのが面倒だなーと思ったことはないでしょうか。 そんなときにちょっぴり役に立つ技を紹介したいと思います。

それは読み込むJavaScriptファイルをPHPで記述してしまう方法です。 これを使えば、面倒なJavaScriptもPHPスクリプトで動的に変化させる ことができるようになります。

たとえば、test.phpでJavaScriptを生成するには以下のようになります。

テンプレート内

<script type="text/javascript"src="test.php?flag=1"></script>
<script type="text/javascript">
a();
</script>

test.php内

<?php
echo "function a() {";
if (
$_GET["flag"]) {
  echo 
"alert('aaa');";
} else {
  echo 
"alert('bbb');";
}
echo 
"}";
?>

さらに、PHPでJavaScriptを記述すると、以下のような方法でJavaScript ファイル内(ここではtest.php内)から他のJavaScriptファイルをインク ルードして、読み込んだ関数を使用することもできるようになります。

test.php内

<?php
// readfileで test()関数を定義したJavaScriptファイルをインクルード
readfile("another_script.js");
?>
// ここからはJavaScript構文を記述
test();

JavaScriptのインクルードは、JavaScriptのcreateElementで<script>タグを 生成する方法でも可能ですが、PHPでreadfileを使うほうが処理が早くなります。

また、これらの技はSmartyなどのテンプレートエンジンを利用すると、さらに 使いやすくなります。以下はデリミタを"{{"と"}}"に設定した例です。

function a() {
{{if $is_hogehoge}}
  alert('aaa');
{{else}}
  alert('bbb');
{{/if}}
}

PHPとJavaScriptを絡めた処理を記述する場合などにとても便利なのでぜひ お試しください。


(アシアル 松田惇)


この記事は、アシアルが運営するPHP開発者のためのポータル&コミュニティサイト「PHPプロ!」で毎週配信しているPHP・TIPSメーリングリストを再録したものです。
同サイトでは、他にもPHP最新ニュースや、困ったときのQ&A掲示板、初心者向けのPHP講座など、PHP開発者をサポートする情報を掲載しています。