babel-preset-phpを使ってPHPをJavaScriptにトランスパイルする

みなさん、こんにちは。
システム開発第6事業部の渋谷です。
表題の通りですが、今回は babel-preset-php を使ってPHPをJavaScriptにトランスパイルしたいと思います。
※babel-preset-phpを利用するには、Node.js7.0以上が必要ですので、各自インストールしてください。
■実際にトランスパイルしてみる
Node.js7.0以上がインストールされている環境が準備出来ましたら、下記コマンドを実行します。
$ npm init -y
$ npm i -S babel-preset-php
.babelrc というファイルを作成し、下記の内容を記入します。
{
"presets": ["php"]
}
では、トランスパイルするPHPファイルを作成します。
まずは公式にあるソースを使ってみますので、適当なPHPファイル(今回は sample.php)を作成し、その中に書きのソースを書きます。
<?php
define('FOO', max(floatval($c), strlen("foo")));
$bar['x'][][$b] = json_encode(__FILE__);
class Foo extends Bar\Baz {
var $z = "hello" . "world";
function __construct($some = array(7)) {
parent::__construct(func_get_args());
self::${$k} = "{$this->z[10]}";
}
}
PHPファイルへの書き込みまで完了しましたら、下記コマンドを実行し、JavaScriptのファイルを生成します。
npm i -g babel-cli
babel sample.php -o sample.js
すると、同じ階層にES7で書かれたjsファイル sample.js が作成されているはずです。中身を見て見ましょう。
const FOO = Math.max(+c, "foo".length);
bar.x.push({
[b]: JSON.stringify(__filename)
});
class Foo extends Bar.Baz {
constructor(some = [7]) {
super(arguments);
this.z = "hello" + "world";
Foo[k] = `${this.z[10]}`;
}
};
定数、配列、クラスまで、しっかりとトランスパイル出来ているのが分かるかと思います。
■注意
トランスパイル出来ない言語機能もありますので、利用する際は公式を見ましょう。
主に、コメントがうまく変換されない・static変数が使えない・予約語は変数名に出来ないなどがあります。
■まとめ
PHPをJavaScriptに変換してどうするのかと最初は考えましたが、以前の記事で紹介されていた AWS Lambda を使ってサーバレスアプリケーションが作れれば面白いかなと、個人的には思いました。
面白い使い方があったら教えていただけると嬉しいです!!
Posted by ShibuyaYuuki