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開発者をサポートする情報を掲載しています。