PHP 7.1.0 Alpha 1

PHP 7.1.0 Alpha 1 がリリースされています。

またAlpha 1なのでこれから変化もありましょうが、気になる機能があります。

Void Return Type

戻り値の型指定に戻り値なし、という指定(void)ができるようになりました。
というか、php7から戻り値の型を指定できるようになっていたのか!!
いやー、感慨無量です。
スカっと見落としていましたが、php7が世間のスタンダードになったらぜひ使いたい戻り値の型指定。

Multi catch

Exceptionの型によってエラー処理を切り替えられる、というオブジェクト指向機能の強化です。
でも、php5を使っている現状ではExceptionをthrowしてくれる処理はあまりないため、try-catchの使用も限定的にならざるおえません。
また、標準Exceptionの種類も多くありませんです。
PDOもPDOException一本槍で、コネクションでダメなのかSQLの実行でダメなのか、fetchallでメモリに全部読み込めなかったのか、など分ければいいのにと思います。

ですので、php7を使う場合でも(現状では)Exceptionを自分で定義していく方以外はあまり使い道がないのが現状と思います。

標準で定義されているExceptionと導入されたバージョンを整理してみました。

定義済みの例外

  • Exception (PHP 5 >= 5.1.0)
  • ErrorException (PHP 5 >= 5.1.0, PHP 7)
  • Error (PHP 7)
  • ArithmeticError (PHP 7)
  • AssertionError (PHP 7)
  • DivisionByZeroError (PHP 7)
  • ParseError (PHP 7)
  • TypeError (PHP 7)

SPLの例外

  • BadFunctionCallException (PHP 5 >= 5.1.0, PHP 7)
  • BadMethodCallException (PHP 5 >= 5.1.0, PHP 7)
  • DomainException (PHP 5 >= 5.1.0, PHP 7)
  • InvalidArgumentException (PHP 5 >= 5.1.0, PHP 7)
  • LengthException (PHP 5 >= 5.1.0, PHP 7)
  • LogicException (PHP 5 >= 5.1.0, PHP 7)
  • OutOfBoundsException (PHP 5 >= 5.1.0, PHP 7)
  • OutOfRangeException (PHP 5 >= 5.1.0, PHP 7)
  • OverflowException (PHP 5 >= 5.1.0, PHP 7)
  • RangeException (PHP 5 >= 5.1.0, PHP 7)
  • RuntimeException (PHP 5 >= 5.1.0, PHP 7)
  • UnderflowException (PHP 5 >= 5.1.0, PHP 7)
  • UnexpectedValueException (PHP 5 >= 5.1.0, PHP 7)

標準の例外はほとんどPHP7からで、しかもそれらはphp7の機能追加に伴って追加されたものが多いようです。
SPLはSPL自体の機能がもっと充実してくればなぁ・・・と思います。
SPLをあまり使っていないので、当然Exceptionにもあまりなじみがありませんね・・・