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/migration72.new-features.php



PHP 7.0.x で推奨されなくなる機能


PHP 4 形式のコンストラクタ


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


<?php

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


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


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



PHP 7.2.x で推奨されなくなる機能


クオートしない文字列


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


<?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



php.ini ディレクティブのリスト

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/

Advanced PHP Debugger(APD) および » Xdebug といったフリーの外部デバッガモジュールもあります。


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


PHP公式サンプル集

https://www.php.net/manual/ja/indexes.examples.php


参考

https://www.php.net/manual/ja/migration70.php

https://www.php.net/manual/ja/migration72.php

https://www.php.net/manual/ja/debugger.php