LoginSignup
1

More than 5 years have passed since last update.

HaxeはPHP7に対応しました

Last updated at Posted at 2016-12-28

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というのもそれなりに実用度が高くなってくるかもしれませんね。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1