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

Blog Single

みなさん、こんにちは。

システム開発第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
今はPHPで開発を行なっているエンジニア。 就職してから体重が15キロ増えました!!

Other Posts: