LoginSignup
1
2

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-07-09

概要

ここに訪れた方が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

1
2
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
1
2