Skip to content

Instantly share code, notes, and snippets.

@rokugasenpai
Created May 8, 2017 15:14
Show Gist options
  • Save rokugasenpai/e7a11f35df7ea8e8fd86ea8a622145db to your computer and use it in GitHub Desktop.
Save rokugasenpai/e7a11f35df7ea8e8fd86ea8a622145db to your computer and use it in GitHub Desktop.
PHPバージョン差異チートシート

PHP5.3

PHP5.4

  • トレイト
    http://php.net/manual/ja/language.oop5.traits.php
  • 配列の短縮構文
  • 関数の返り値を配列として扱えるようになった
    foo()[0]
  • クラスのインスタンスを生成するときに、そのメンバーにアクセスできるようになった
    (new Foo)->bar()
  • staticメソッドの可変呼出し
    Class::{expr}()
  • 関数呼出し時の引数の参照渡しで警告
  • セーフモード削除
  • マジッククォート削除
  • hex2bin()
  • session_status()
  • session_register_shutdown()
  • mysqli_error_list()
  • mysqli_stmt_error_list()

PHP5.5

PHP5.6

PHP7.0

  • スカラー型宣言(string int float bool)
    function sumOfInts(int ...$ints)
  • 戻り値の型宣言
    function arraysSum(array ...$arrays): array
  • Null合体演算子(??)
    $username = $_GET['user'] ?? 'nobody';
    $username = $_GET['user'] ?? $_POST['user'] ?? 'nobody';
  • 宇宙船演算子(<=>)
    echo 1 <=> 1; // 0
    echo 1 <=> 2; // -1
    echo 2 <=> 1; // 1
  • define()を用いた配列定数の定義
  • 無名クラス
    $this->setConfig(new class implements IConfig {
    public function validate($data)
    {
    // some validation
    }
    });
  • use宣言のグループ化
    use some\namespace{ClassA, ClassB, ClassC as C};
  • Generator::getReturn()
  • intdiv()
  • session_start()のオプション配列
    http://php.net/manual/ja/function.session-start.php#refsect2-function.session-start-unknown-unknown-exampleu
  • Unicodeコードポイントエスケープ構文
    Unicodeのコードポイントを十六進形式で受け取る
    先頭のゼロは省略してもかまわない
    echo "\u{aa}"; // a
    echo "\u{0000aa}"; // a
    echo "\u{9999}"; // 香
  • IntlCharクラス
    Unicode Character Databaseで配布されているデータを文字の種類の判定に使う
  • 可変アクセスの評価順の変更
    $$foo['bar']['baz']を意図通りにするには${$foo['bar']['baz']}
    $foo->$bar['baz']を意図通りにするには$foo->{$bar['baz']}
    可変アクセスに配列を使う場合は{}で囲む

PHP7.1

  • nullable型
    function testReturn(): ?string
    function test(?string $name)
  • 返り値の型としてvoid
    function swap(&$left, &$right): void
  • 代入用に配列の値を[]で取り出す
    [$id1, $name1] = $data[0]
    foreach ($data as [$id, $name])
  • クラス定数のアクセス範囲指定(public const / protected const / private const)
  • 例外処理における複数の例外のcatch
    } catch (FirstException | SecondException $e) {
  • list()におけるキーのサポート
    list("id" => $id1, "name" => $name1) = $data[0];
  • 負の文字列オフセット
    var_dump("abcdef"[-2]); // e
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment