全カバレッジ達成したユニットテストの導入。オブジェクトのバイナリ非互換性を修正。alpha1リリース時点のものなので、PHP5.4正式リリースの際とは多少違ってくるので注意です。traitの追加PHP5.4で現れるであろう最も大きな変化は、恐らくtraitが追加されたことではないでしょうか。traitとは、クラスから再利用出来るメソッドとプロパティのコレクションです。PHP5.4から導入されるtraitキーワードを用いてtraitを宣言して、クラス内でuse構文を用いると、traitの振る舞いをクラス内で利用できます。traitのメソッドとプロパティを利用しています。traitはクラスの継承関係に影響を与えずにメソッドなどの振る舞いを再利用できます。このtraitはクラス内で複数指定することもできます。fugafugaさらに以下のようにtrait内で複数のtraitを集約することができます。errorが起きます。error}これを避けるためには、PHP5.4で新たに導入されるinsteadofキーワードを用いてtraitのメソッドの優先度を設定できます。}}上のようにAクラスのdoSomethingメソッドをBクラスのdoSomethingメソッドよりも優先する、という宣言をすることで、メソッド名の衝突を解決することができます。asキーワードを用いてtraitメソッドのエイリアスを設定することができます。fugaエイリアスは、単にそのtraitのメソッドの名前を変えるわけではなく、オリジナルのメソッドの別名を付ける機能です。この事は以下のような例で確かめることができます。hogehogeエイリアスとは別に、クラスからtraitを利用する際にasキーワードを用いてtraitのメソッドの属性を一部変更することもできます。errorこの例では、traitから持ってきたdoSomethingメソッドにdoAnythingエイリアスを設定しprivateなメソッドにしています。他にもfinalやprotectedな属性をtraitのメソッドに加えることができます。staticな属性を与えることはできません。他にもtraitにはabstractなメソッドを定義できます。abstractなメソッドを持ったtraitをクラス内で利用するときには、そのクラスはそのabstractなメソッドを実装する必要があります。hogehoge他にもtraitに関係する関数やメソッドが追加されました。関数ではtrait_exists関数、get_declared_classess関数が追加され、ReflectionClassクラスにはisTraitメソッド、getTraitNamesメソッド、getTraitAliasesメソッド、getTraitsメソッドが追加されました。同じひと通りtraitができることについてまとめました。記法が利用出来るようになりました。dereferencePHP5.3では、関数やメソッドが配列を返す場合にその配列のメンバーにアクセスする場合は、一度変数に代入しなければなりませんでした。alpha1では、そういったケースでもわざわざ変数に代入しなくても角括弧演算子を用いて配列のメンバーにアクセスできるようになりました。hogehogeただし、以下のような例はパーサエラーになってしまいました。alpha1では、メソッド内で宣言した無名関数の中で$thisを参照するとそのメソッドが属するオブジェクトを指すようになりました。無名関数が宣言されたメソッドの文脈も引き継がれるようになり、無名関数の中からprivateやprotectedなメソッドとプロパティにアクセスできるようになりました。"hoge"JsonSerializableインターフェイスの追加オブジェクトをJSON化する際に利用されるJsonSerializableインターフェイスが追加されました。JsonSerializableインターフェイスを実装すると、json_encode関数に渡した場合の振る舞いを設定することができます。alpha1リリースに含まれる機能ではないのですが紹介しておきます。PHPはapacheなど他のウェブサーバと組み合わせて動かすのが普通ですが、この変更でPHPそのものにウェブサーバが組み込まれます。この組み込みウェブサーバは、実際にサイトを運用するためのものではなく開発用に簡単にウェブサーバを立ち上げられるように追加されたものです。コマンドラインから"-S"オプションを付けて起動すると、PHPがウェブサーバとして立ち上がりHTTPリクエストを受けるようになります。以下マニュアルからの引用です。quit.リクエストを受けるとログがコマンドラインに流れます。alpha1リリースには含まれなかったようですが、ここを見るとPHP5.4系のこれからのリリースには含まれることになりそうです。alpha1の筆記すべき新機能をひと通り紹介しました。正式リリース時にはalpha1とはまた違ってくる部分もあると思われますがPHP5.4の概要が大まかに見渡せたと思います。byスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。