PHP5.4の新機能(その3)

1回目2回目だけではまだまだ書ききれないPHP5.4の新機能を紹介いたします。

1.配列のシンタックスシュガー

すっかり紹介を忘れてました。
他の言語のように配列の簡単な初期化がサポートされます。
(これを名前空間とか、無名関数の前にやってほしかったなぁ、、、)

$a = ['AKB', 'SKE', 'MNB'];
$b = ['チームA' => '倉持明日香', 'チームK' => '秋元才加', 'チームB' => '柏木由紀'];

そう、arrayとか書かなくて良いのですよ!  ”[]“だけで良いのですよ!!!

2.staticメソッドの可変呼び出し

波括弧を使いstaticメソッドの呼び出しを可変に出来ます。

class StaticClass {
public static $name = '峯岸みなみ';
public static function getName() {
return '峯岸みなみ';
}
}

$property = 'name';
echo StaticClass::${$property},PHP_EOL; //「峯岸みなみ」と表示される。(5.3でもOK)

$method = 'getName';
echo StaticClass::{$method}() ,PHP_EOL; //「峯岸みなみ」と表示される。(5.4からOK)

プロパティの呼び出しは5.3から{}が使えていたのですが、5.4からメソッドでも使える用になりました。

3.callableが型ヒントに使える

β1からタイプヒントにcallable型が使える様になりました。

//callable タイプヒント
function hi(callable $f) {
echo $f(), PHP_EOL;
}

class Human
{
public function hello() {
return "上からマリコ";
}
}

hi([new Human(), 'hello']); //「上からマリコ」が表示される。

$songName = function() {
return "Everyday カチューシャ";
};

hi($songName); //「Everyday カチューシャ」が表示される。

現在の実装として無名関数の親クラスはClojureでそれを型ヒントに使えるのですが、
将来変更される可能性があるのでより便利な型が追加されたようです。

4.コンストラクタからメソッドチェーンが実行可能

β2から追加された新機能です。

class Human
{
function __construct($name) {
$this->name = $name;
}

public function hello() {
return "Hi " . $this->name;
}
}

// 古い方法
$human = new Human("まゆゆ");
echo $human->hello();

// 新しい方法
echo (new Human("まゆゆ"))->hello();

phpは変数のスコープが他の言語と比べても広いので、
コンストラクタからメソッドチェーンや、配列をメソッドチェーンの様に利用
は変数の宣言を抑えて、名前の衝突を避けることができるので地味に嬉しいですね。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中