PHP 5.6.x から PHP 7.x.x への移行のまとめ


# 概要
> ここに訪れた方がphp7について理解できるまでを目標のため、日々更新予定

# 新機能
1. スカラー型宣言
2. 戻り値の型宣言
3. Null 合体演算子 
4. 宇宙船演算子
5. define() を用いた配列定数の定義 
6. 無名クラス
7. Unicode コードポイントエスケープ構文
8. unserialize() のフィルタリング
9. IntlChar　
10. Expectation
11. use 宣言のグループ化
12. ジェネレータでの return 
13. ジェネレータの委譲
14. intdiv() による整数の除算
15. セッションのオプション
16. preg_replace_callback_array()
17. CSPRNG 関数
18. list() が常に、 ArrayAccess を実装したオブジェクトをアンパックできるように
19. 名前空間のグループ指定における最後のカンマの許可 
20. object 型
21. 名前指定による拡張モジュールのロード
22. 抽象メソッドのオーバーライド
23. Sodium がコアモジュールに
24. Argon2 によるパスワードハッシュ
25. PDO の拡張文字列型
26. PDO のデバッグ情報にプリペアのエミュレートの内容を追加 
27. LDAP における拡張オペレーションのサポート
28. ソケット 拡張モジュールでのアドレス情報の対応
29. パラメータの型の拡大変換
30. Windows での proc_nice() のサポート
31. pack() と unpack() でのエンディアンのサポート
32. EXIF 拡張モジュールの機能追加
33. PCRE の新機能
34. SQLite3 での BLOB の書き込み
35. Oracle OCI8 Transparent Application Failover コールバック 
36. ZIP 拡張モジュールの機能追加 

> 説明などについては以下公式ページへ
[https://www.php.net/manual/ja/migration70.new-features.php](https://www.php.net/manual/ja/migration70.new-features.php)
[https://www.php.net/manual/ja/migration72.new-features.php](https://www.php.net/manual/ja/migration72.new-features.php)

# PHP 7.0.x で推奨されなくなる機能
### PHP 4 形式のコンストラクタ
> PHP 4 形式のコンストラクタ (クラス名と同じ名前のメソッドを定義するもの) が非推奨となりました。将来的に削除される見込みです。 PHP 7 では、クラス内でこの形式のコンストラクタしか定義されていない場合に E_DEPRECATED が発生します。 __construct() メソッドを実装していれば、この警告は発生しません。

```vim
<?php
class foo {
    function foo() {
        echo 'I am the constructor';
    }
}
?>
```

> 上の例の出力は以下となります。


```vim
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; foo has a deprecated constructor in example.php on line 3
```

> もっと知りたい方↓
[https://www.php.net/manual/ja/migration70.deprecated.php](https://www.php.net/manual/ja/migration70.deprecated.php)



# PHP 7.2.x で推奨されなくなる機能
### クオートしない文字列
> クオートしない文字列は、その名前のグローバル定数が定義されていない場合は単なる文字列という扱いになります。 このとき、いままでは E_NOTICE が発生していました。 PHP 7.2.x 以降は、E_WARNING が発生するようになります。 次のメジャーバージョンアップ後は Error 例外が発生するようになります。

```vim
<?php

var_dump(NONEXISTENT);

/* 出力:
Warning: Use of undefined constant NONEXISTENT - assumed 'NONEXISTENT' (this will throw an Error in a future version
 of PHP) in %s on line %d
string(11) "NONEXISTENT"
*/

```
> もっと知りたい方↓
[https://www.php.net/manual/ja/migration72.deprecated.php](https://www.php.net/manual/ja/migration72.deprecated.php)


# php.ini ディレクティブのリスト
[https://www.php.net/manual/ja/ini.list.php](https://www.php.net/manual/ja/ini.list.php)


# PHP のデバッグについて 
> PHP 5.6 には、phpdbg 対話型デバッガー が同梱されます。 5.6 より前のバージョンには、内部のデバッガ機能はありませんが、 外部のデバッガモジュールを使用することができます。 » Zend IDE にはデバッガが付属していますし、 DBG(» [http://www.php-debugger.com/dbg/](http://www.php-debugger.com/dbg/)
> Advanced PHP Debugger(APD) および » Xdebug といったフリーの外部デバッガモジュールもあります。

```vim
function console_log( $data ){
  echo '<script>';
  echo 'console.log('. json_encode( $data ) .')';
  echo '</script>';
}

Usage:
$myvar = array(1,2,3);
console_log( $myvar ); // [1,2,3]

```

# PHP公式の全関数およびメソッドの一覧
[https://www.php.net/manual/ja/indexes.functions.php](https://www.php.net/manual/ja/indexes.functions.php)

# PHP公式サンプル集
[https://www.php.net/manual/ja/indexes.examples.php](https://www.php.net/manual/ja/indexes.examples.php)

# 参考
[https://www.php.net/manual/ja/migration70.php](https://www.php.net/manual/ja/migration70.php)

[https://www.php.net/manual/ja/migration72.php](https://www.php.net/manual/ja/migration72.php)

[https://www.php.net/manual/ja/debugger.php](https://www.php.net/manual/ja/debugger.php)