PHPでJavaScript -- SpiderMonkeyモジュール
Zend DevZoneの記事で、PHPでJavaScriptを使う記事が投稿されました。http://devzone.zend.com/article/4704-Using-JavaScript-in-PHP-with-PECL-and-SpiderMonkey
日本では、spidermonkey拡張モジュール - Do You PHP はてブロ、こちらの記事が非常にわかりやすかったです。
個人的には、これ、かなり惹かれます。
というのは、近頃のWebシステムだとAjaxフレームワークを使うのが本命なわけで、ブラウザー上でかなりのことが出来てしまうわけです。PHPではJsonさえ吐いとけばいいよっていう世界だったりするわけで、JS前提であればCRUDがあればOKな気さえします。
ところが、携帯対応、および非JS対応っていうのがどうしてもあるので、ウインドウ制御はブラウザ上およびサーバ上の両方でメンテナンスしなければならないわけです。
たとえば、ユーザーインタラクションであるメニューが選択されたとき、タブを開くとする。これJSでも簡単なわけですが、同じ動作をJS抜きで実装しようとするとサーバ上での実装が不可欠になってしまう。
が、そんなとき、ブラウザとサーバでスクリプトを共有できたらどうか。
UIに関するインタラクションは全部JSで書けばいいんじゃね?っていうことになりますね。(理論上は)
実際にどう使っていくかっていうところまで手が回らないんですが、とりあえずバリデータロジックには使えそうですね。
かゆいところ (追記)
<?php // create JavaScript context $js = new JSContext();
以下、$jsを用いて、JSが実行できるらしいということはわかった。
- 単純なコード実行
- 変数の割り当て
- オブジェクトの割り当て
- 関数の割り当て
- クラスの割り当て
等、すべてに言えるのは、PHP側の実装をSpiderMonkeyに流す機能の様子。
個人的には、JSで実装されたクラスやオブジェクトをPHPで実行できたら便利なんだけど・・・と
たとえば、jQueryのライブラリをPHPから呼び出すという意味で。
サンプルではテキスト出力して終了するものが多いんですが、たとえばこんな感じ
<?php // evaluate code and display result header('Content-Type: text/xml'); echo $js->evaluateScript($script); ?>
SpiderMonkey側のJSコードから関数やオブジェクトを受け取るとPHP側のλとして使えたりするんでしょうか・・・さっそく試してみようと思います。