プログラミング

PHP7.3がリリースされていたので新機能紹介

PHP7.3がリリースされていたので新機能紹介

概要

フリーランスエンジニア スリーネクスト

最近、PHP開発から離れていたのでPHP7.3がリリースされていたのに気づかなかったです。
正確には日本時間で2018/12/07にPHP7.3がリリースされました。
PHP7.3がリリースされてどうなるのか、どんなインパクトがあるのかというと
びっくりするようなものはありません。

PHP7.3の主な変更点

処理速度

PHP7.2よりも10%程度早くなったという話を聞きます。
柔軟なHeredocとNowdocの構文
doc文字列の終了マーカーの後にセミコロンや改行を続ける必要がなくなりました。 さらに、終了マーカーがインデントされていることがあります。その場合、インデントはdoc文字列のすべての行から削除されます。

PCRE2の移行

PCRE拡張はPCRE2にアップグレードされました。これにより、動作上の小さな変更(クラス内の文字範囲の厳密な解釈など)が発生し、既存の正規表現の構文が強化されます。
preg_quote()は '#'文字もエスケープするようになりました。

複数のMBStringの改善

完全なケースマッピングとケースフォールディングのサポート
フルケースマッピングとケースフォールディングのサポートが追加されました。 単純なcase-mappingとは異なり、full case-mappingは文字列の長さを変えるかもしれません。

LDAPコントロールのサポート

LDAPクエリ機能およびldap_parse_result()にLDAPコントロールの完全サポートが追加されました。
コントロールをサーバーに送信するための$ serverctrlsパラメーター。 そしてldap_read()が追加されました。
ldap_parse_result()でサーバーから制御を取得するためのoutパラメータ$ serverctrlsが追加されました。
ldap_get_option()およびldap_set_option()でのLDAP_OPT_SERVER_CONTROLSおよびLDAP_OPT_CLIENT_CONTROLSのサポートは修正されました。

いくつかの非推奨

大文字と小文字を区別しない定数

大文字と小文字を区別しない定数の宣言は廃止されました。 define()の3番目の引数としてTRUEを渡すと、非推奨警告が生成されます。 宣言とは異なるcaseを使用した、大文字と小文字を区別しない定数の使用も非推奨です。

名前空間付きassert()

名前空間内でassert()という関数を宣言することは非推奨です。 assert()関数は、エンジンによる特別な処理の対象となり、名前空間付きの関数を同じ名前で定義すると、動作に矛盾が生じる可能性があります。
文字列以外のNeedleを文字列で検索する
文字列検索関数に非文字列の針を渡すことは非推奨です。 将来的には、針はASCIIコードポイントではなく文字列として解釈されます。 意図する動作に応じて、needleをstringに明示的にキャストするか、またはchr()を明示的に呼び出す必要があります。 以下の機能が影響を受けます。

旧バージョンのサンセット

PHP5.6のサポートはなくなるようです。
PHP5は7に比べると性能面では圧倒的に弱いのでもう使う必要ないです。
PHP5で作ったシステムは移行が難しいので難しいですが
これからシステムを作るときには7.3で作るのが賢明です
PHP7.3は7.2以前からの機能を削除していることもあるので
WordPressもPHP7.3サポートされるまでアップグレードはやめたほうが良さそうです。

-プログラミング