37
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[メモ]PHP 5.3から5.6までに追加された機能

Last updated at Posted at 2015-06-21

本題の前に

背景

まもなくPHP7がリリースされているという話を見て、"現時点(2015年5月時点)で最新のPHPってどんな機能が追加されているのだろうか?"とふと思いPHPマニュアルの付録をさらっと見てみたところ、思いのほか知らない機能があることに気付きました。

自戒の意味も込めて、個人的に気になった"各バージョン毎の追加機能"を簡単にまとめて社内勉強会のLTで発表してみたら、思いのほかウケがよかったので、作ったスライドの内容を公開してみます。

前提

  • LTで発表する内容として作ったので、ピックアップして簡易的にまとめており詳細に触れてはいません。詳細を知りたい場合は、PHPマニュアルの付録を参照してください。
  • 関数の追加・変更や、バージョン毎の互換性等に関しては特に触れていません。
  • タイトルにもある通り、PHP5.3以降に絞って書いています。

本題

PHP 5.3

  • 無名関数の対応
  • 名前空間のサポート
  • クラスの外でconstを利用して定数を定義できる。
    • 元々、クラスの外での定数はdefineを使って定義できました。
      defineとの違いとしては、名前空間の影響を受けることが挙げられます。
  • 三項演算子の短縮形(?:)が利用可能
    • ex) $member = $djyugg ?: “other”;
    • 上記の場合、$djyuggの値をbooleanにキャストして、trueの場合は$djyuggの値を代入、falseの場合は"other"を代入といった動作になります。
  • goto文の対応

PHP 5.4

  • Traitのサポート
  • 配列の短縮形([])サポート
var members = [];
  • インスタンス生成時にメンバにアクセス可能になる
(new Hoge())->fuga()
  • 2進数フォーマットの対応
    • ex) 0b10011101
  • PHPモジュールにWebサーバが組み込まれる
    • あくまで開発支援用

PHP 5.5

  • foreachでlist()が利用可能
  • generatorの対応
  • try-catchでfinallyが利用可能
  • arrayリテラルとstringリテラルのデリファレンス
    • “string”[2] で”r”が出力される。
    • 1バイト単位でしか参照できないようで、マルチバイト文字で同じことをやると化けます…
  • OPcache 拡張モジュールの追加
    • ソースコードを事前に中間コードにコンパイルしてメモリにキャッシュしてくれる機能。
      php.iniで有効・無効を設定できます。

PHP 5.6

  • constでの定数定義時に式が利用可能
const CONST_VALUE = 1;  
const CONST_VALUE_SECOND = CONST_VALUE * 2
  • 可変個引数関数(...演算子)
public function input_check($user,  $parameters)
  • 累乗演算子 ** の追加
  • 名前空間の機能として、useを使った関数・定数のインポート・エイリアス定義が可能

参考

37
36
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?