PHP7がリリースされ、
速度、メモリ低減の等のパフォーマンス向上の他 幾つか新機能も追加されました。
PHP5.3からは無名関数が使えるようになりましたが、
PHP7.0からは新たに無名クラス ( Anonymous Class ) が加わりました。
今回はPHP7の無名クラスの検証の為にMacにPHP7をインストールしました。
* (参考にしたサイト) Shameer C : Installing PHP 7 on Mac using Homebrew
# home-brewを使ってインストールします
brew update
brew install homebrew/php/php70
export PATH="$(brew --prefix homebrew/php/php70)/bin:$PATH"
無名クラスを使うことにより、
今までの5.*系よりもクラスが取り扱いが簡単になります。
クラスの呼び出しも、今までは変数内でクラスをインスタンス化していたのが
直接呼び出せるようになりました。
/* クラスの呼び出しサンプル */
class Repo
{
public function test()
{
return "hello";
}
}
/* PHP 5.6 */
// クラスをインスタンス化
$repo = new Repo();
// Repoクラスのtest関数の呼び出し
echo $repo->test();
/* PHP 7.0.2で検証 */
echo (new Repo)->test();
呼び出す時も変数内でインスタンス化する必要が無いので
短く記述出来るようになりましたね!
(*PHPのCエクステンションのredisで、接続等をチェーンメソッドで呼びだそうと試しましたが、2.2.8では出来ませんでした)
また、クラスを作成する際も 関数内でクラスを作成することが出来ます。
class Helpers
{
public function func()
{
// 無名クラスの作成
return new class()
{
// 実行関数
// php7からはint型などのタイプヒンティングも出来ます
private function exe(array $conf)
{
return $conf;
}
// config等のデータを引数で読みとる
public function do(array $config)
{
return $this->exe($config);
}
}; // 無名クラスにはセミコロンが必要です
} // END func()
} // END Class *Helpers
// Helpersクラスfunc関数の呼び出し
var_dump( (new Helpers)->func()->do([1,2]) );
無名クラスを使うことで、PHP7で開発を行う際はライブラリ等の開発が
今までよりも簡単で綺麗に作成できそうです!
PHP7でプロジェクトを進めている方はゼヒ×2新機能をふんだんに使って下さい!