2012年9月7日金曜日

PHP5.4.6が出てる今更、5.4の新機能について

今更、PHP5.4の新機能を読みました。
http://www.php.net/manual/ja/migration54.new-features.php
いや実は、5.4.xが出てることすら気づかなかったのですが、
厳密にはトレイトをサポートします!とか言ってたころから追ってません。

  • トレイトのサポートが追加されました。
  • 配列の短縮構文が追加されました。$a = [1, 2, 3, 4]; や $a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4]; のように使えます。
  • foo()[0] のように、関数の返り値を配列として扱えるようになりました。
  • クロージャ が $this をサポートするようになりました。
  • クラスのインスタンスを生成するときに、そのメンバーにアクセスできるようになりました (例: (new Foo)->bar())。
  • Class::{expr}() 構文をサポートするようになりました。
  • 二進数フォーマットが追加されました。0b001001101 のように使えます。
  • パースエラー時のパーサからのメッセージや関数コール時の引数が間違っている場合の警告メッセージが改善されました。
  • セッションモジュールで、ファイルのアップロード状況を追跡できるようになりました。
  • CLI モードで動く、開発用のウェブサーバー が組み込まれました。

それ、pythonで出きるYO。

「トレイト」なるキモい構文は、mix-in専用構文だって話らしいので、恐らく内部的には、「クラス定義のインポート」なんでしょうね。故に重複定義は怒られる。らしい。

新機能を見るかぎり、どうやらZendコンパイラしかイジってなさそう。っと言うことは、ダメ言語である、ということは変わってなさそう。「警告メッセージが改善されました」とか、得意気にいうことじゃねーだろ。 そんもの5.3.Xで終わっとけ。

暗黙の型変換をOFFれるようにしやがれ。話はそれからだ。

そーいえば、PHP5.5ではようやく、generatorをサポートするって、話だし、
http://blog.sarabande.jp/post/30716058960
Javaのパクリの後はpythonですかソーデスカ。

似たようなことはイテレータでも出来ますが、イテレータの方が若干頭を使いますね。逆に言語側の実装は楽になるわけです。ジェネレータはまさしく逆。関数の実行を中断して、次回は続きから実行するとか、言語側の実装は4倍は面倒だと思う。