PHP Closure::call()
PHP 7 の Closure::call() は、クロージャ関数を新しいオブジェクトインスタンスに動的にバインドして呼び出し実行する、より優れたパフォーマンスを備えています。
サンプル
サンプル
<?php
class A {
private $x = 1;
}
// PHP 7 より前のバージョンでクロージャ関数を定義するコード
$getXCB = function() {
return $this->x;
};
// クロージャ関数をクラス A にバインドする
$getX = $getXCB->bindTo(new A, 'A');
echo $getX();
print(PHP_EOL);
// PHP 7+ コード
$getX = function() {
return $this->x;
};
echo $getX->call(new A);
?>
class A {
private $x = 1;
}
// PHP 7 より前のバージョンでクロージャ関数を定義するコード
$getXCB = function() {
return $this->x;
};
// クロージャ関数をクラス A にバインドする
$getX = $getXCB->bindTo(new A, 'A');
echo $getX();
print(PHP_EOL);
// PHP 7+ コード
$getX = function() {
return $this->x;
};
echo $getX->call(new A);
?>
上記のプログラムを実行した出力結果は次のとおりです:
1 1
その他の拡張
PHP 7 の新機能