Haxe3.4からHaxeはPHP7に対応したコードを出力してくれるようになりました。
HaxeのPHP対応はやる気が無いなんて言われていましたが、そんなこともなかったんですね!
喜ばしいことです。
さて、軽くHaxeが出力するPHPのコードを見てみましょう。
PHP7に対応したコードを出力するには
-D php7
というコンパイルフラグを設定しておく必要があります。これを設定しないとPHP7に対応していない、これまで通りのコードが出力されるので注意して下さい。
定番のHello worldで見てみましょう。
class Main {
static function main() {
#if php
php.Lib.print("Hello world");
#end
}
}
さて、このようなコードはこれまではHaxeが独自定義するオブジェクトでラップされまくったPHPコードになっていたわけですがどのようにかわったのでしょうか?
<?php
/**
* Generated by Haxe 3.4.0
*/
use \php\Boot;
class Main {
/**
* @return void
*/
static public function main () {
echo("Hello world!!");
}
/**
* @return void
*/
public function __construct () {
}
}
Boot::registerClass(Main::class, 'Main');
はい、大変スッキリしたコードになりました。
可読性も十分にあります。
PHPで開発する時、DocCommentを書くのが一般的ですがHaxeが出力するPHPのコードにもしっかりDocCommentが付与されています。
このコードをそのままPHPStromなんかで利用しても補完が効くようになるので素晴らしいですね。
ちなみに、php.Lib.print
はPHP7非対応版だと、専用のprint関数を呼び出していましたが、
PHP7対応版では文字列はそのままecho
し、文字列以外はそのオブジェクトを文字列に変換してecho
するように変わっています。
PHPといえば配列ですが、Haxe3.4からphp.NativeArray
という型が提供されるようになるようです。
php.NativeArray
は昔からありました…
ちょっと使い方までは調べられなかったのですが、名前から察するにPHPの配列をそのままの形で出力してくれるものかもしれません。
そうだとすると、パフォーマンスの面でもメリットを傍受できるのでHaxeでPHPというのもそれなりに実用度が高くなってくるかもしれませんね。