アップデートしてる?PHP 7.2の新機能と推奨されなくなった機能

こんにちは!ライターのmuramatsuです。

突然ですが、皆さん現在PHPのバージョンは何を使われていますか?

常にバージョンアップが行われているPHP。

WordPressやCakephpなどのソフトウェアのバージョンアップデートはしているけど、PHPのバージョンはアップデートはしていない事がよくあります。

最新のバージョンにしていないと、ソフトウェアとの互換性などが合わなくなってきて、予期せぬ不具合につながってしまう、ということも考えられます。

そんなことが起きないように、今回は現在最新のPHP 7.2について

  • PHP 7.2とは
  • 新機能
  • 推奨されなくなった機能一覧
  • php7.2のインストール方法

を解説していきます。

常に、なるべく新しいPHP情報を入れるようにしておきましょう!

目次

PHP 7.2について

PHP 7.2は、2017年11月30日にリリースされています。

PHP 7.1から新機能や関数の追加と、非推奨になった機能がありますが、今年の終わり頃にはPHP 7.3のリリースがすでに予定されています。

大体1年おきくらいにマイナーアップデートされていて、アクティブサポート期間、セキュリティーサポート期間がそれぞのバージョンで決められています。

バージョンアクティブサポート期間セキュリティーサポート期間
PHP 7.12018年12月1日まで2019年12月1日まで
PHP 7.22019年11月30日まで2020年11月30日まで

常に新しい情報を取り入れ、いつの間にか使っているPHPのサポート期間が終わっていた、なんて事のないようにしていきましょう。

サポート期間については、以下から確認ができます。(英語)
http://php.net/supported-versions.php

まずはPHP 7.3にバージョンアップされる前に、PHP 7.1とPHP 7.2の間にどういった変更点があったのかを見ていきましょう。

また、PHP 7についての解説は以下の記事を参考にしてみてくださいね。

PHP 7.2の新機能

PHPの公式サイトで確認すると、18種類の新機能が追加されています。

その中でも知っておいて損はない新機能を紹介していきましょう。

なおPHP公式サイトから全ての新機能、新しい関数、PHP 7.2以降で推奨されなくなる機能などの解説は以下のURLから確認ができます。
http://php.net/manual/ja/migration72.php

object型が新たに導入

PHPでは本来、JAVAなどのように文字列や数字などの型を指定しなくても実行されますが、これまでのバージョンアップでstring型やint型などの型宣言ができるようになってきていました。

今回のPHP 7.2では加えてobject型もできるようになっています。

これにより引数をオブジェクト型として指定することができます。

<?php

class TestClass {}

function sample(object $bar) : object
{
    return new TestClass();
}

sample(new TestClass());

?>

また、返り値もオブジェクト型として指定することができます。

抽象メソッドのオーバーライド

抽象クラスが他の抽象クラスを継承している時、継承した抽象メソッドの引数を省略することができます。

また、抽象メソッドをオーバーライドできるようになりました。

<?php

abstract class Test1
{
    abstract function sample(string $str);
}


abstract class Test2 extends Test1
{
    abstract function sample($str) : int;
}

?>

ここでは抽象クラスTest1の引数string型を、抽象クラスTest2では省略できています。

そして抽象クラスTest2で返り値の型を指定するオーバーライドをしても、コンパイルエラーは起きません

sodium関数の追加

PHP言語ライブラリの拡張モジュールにsodium関数が追加されました。

sodium関数の一部には以下があります。

関数用途
sodium_add 大きな数字を加える
sodium_crypto_auth_keygenキーのためのランダムバイトを取得してくれる
sodium_crypto_box_sea
sodium_crypto_box
sodium_crypto_secretbox
sodium_crypto_stream_xor
メッセージを暗号化する
sodium_crypto_generichash_initハッシュを初期化する
sodium_crypto_sign_verify_detachedメッセージのサインを検証する
sodium_crypto_signメッセージにサインする

sodium関数はこの他にもたくさんの種類が用意されています。

日本語での詳しい情報はまだ掲載されていませんが、以下のURLを見ながら試してみてください。
http://php.net/manual/ja/book.sodium.php

proc_niceがWindowsでも使用可能

proc_niceは優先順位を付けれる関数です。

今まではproc_nice関数はLinuxのみで使えていましたが、PHP 7.2からWindowsでも使用できるようになっています。

proc_nice関数に関しての詳細:
http://php.net/manual/ja/function.proc-nice.php

pack() unpack()でのエンディアンサポート

データをバイナリ文字列にパックするpack()関数とバイナリ文字列からデータを連想配列で取得するunpack()関数で、小数点の float や double でも対応ができるようになりました。

pack()、unpack()についての詳細は以下のURLから確認できます。
pack()関数:http://php.net/manual/ja/function.pack.php
unpack()関数:http://php.net/manual/ja/function.unpack.php

Oracle OCI8の追加

Oracle社の透過的アプリケーション・フェイルオーバー(TAF)のサポートが追加されて、接続しているデータベースが切れてしまっても自動的に再接続してくれる機能です。

透過的アプリケーション・フェイルオーバー(TAF)については以下のURLから確認ができます。
https://docs.oracle.com/cd/E16338_01/java.112/b56281/ocitaf.htm

推奨されなくなった機能一覧

いつの間にか使えなくなっている、という事が無いように非推奨になった機能をみていきましょう。

非推奨から今後エラーや削除される機能

機能PHP 7.2での
変更点
今後の変更予定
クォートしない文字列E_WARNING が発生メジャーチェンジでErrorになる
INTL_IDNA_VARIANT_2003
バリアント
削除php7.4からINTL_IDNA_VARIANT_UTS46に変更
png2wbmp()および
jpeg2wbmp() 関数
非推奨メジャーチェンジで削除

非推奨になる関数・メソッド

関数・メソッドPHP 7.2での
変更点
代替の関数・推奨事項
__autoload() メソッド非推奨なし
(unset) キャスト非推奨なし
each()関数非推奨なし
create_function() 関数非推奨無名関数
gmp_random() 関数非推奨gmp_random_bits() および
gmp_random_range() を使うこと
assert()関数に文字列を渡す非推奨boolean 値を渡すのがお勧め
read_exif_data() 関数非推奨exif_read_data() 関数
第二引数を指定しないで
parse_str() 関数を使う
非推奨2番目の引数は常に設定すべき

その他非推奨になる機能

機能PHP 7.2での
変更点
代替の関数・推奨事項
エラーハンドラの $errcontext 引数非推奨なし
php.ini の
track_errors および
$php_errormsg 変数
非推奨エラー情報収集は
error_get_last() 関数を使う
mbstring.func_overload非推奨なし

使えなくなった機能を頭に入れておくだけでも、今後の作業に役だってくるのでぜひ確認してください。

もし忘れてしまっても、再度この記事を参考にしてくださいね。

php 7.2 のインストール方法

PHP 7.2の機能がわかったところで、最新のPHPにアップデートしたいけど方法がいまいちわからない、という方にインストール方法を紹介しましょう。

PHPのインストールは、各種プラットフォームにより方法が異なります

Windows

下記のPHPの公式サイトのVC15 x64 Non Thread Safe (2018-Jul-18 12:51:38)よりzipファイルをダウンロードします。

2018年7月時点ではバージョンはPHP 7.2 (7.2.7)です。
http://windows.php.net/download/

またダウンロード方法については、以下のURLを参考にしてみてくださいね。
https://weblabo.oscasierra.net/php-72-windows-install/

Unix系

LinuxやCentOSなどのUnix系のシステムのPHPのインストールは、以下のPHPの公式サイトUnix システムへのインストールより、手順に従ってインストールする必要があります。
http://php.net/manual/ja/install.unix.php

Mac

下記のPHPの公式サイトMac OS X へのインストールより手順に従ってインストールします。
コンパイルの手順はUnix系と同様です。
http://php.net/manual/ja/install.macosx.php

またターミナルからHomebrewを使ってPHPのアップデートを簡単にすることも可能です。

Homebrewのインストール方法:https://qiita.com/saken649/items/b5830de62211b600f7ee

Homebrewを使ってPHPをアップデートする方法:https://qiita.com/yamatmoo/items/4ff2fe1785f771e67e08
この記事ではPHP 7.1にアップデートする方法ですが、PHP 7.2にアップデートする場合は、php@7.1の部分を必ずphp@7.2にしてください。

まとめ

PHP 7.2について、新しく追加された機能や、今まで扱い難かった機能が今後は非推奨になって行ったりと、常にPHPは進化し続けています

大体1年ごとにマイナーアップデートされているので、すぐにアップデートしなくてもいいやと思うかもしれません。

しかしあまりPHPをアップデートしていないで、いつの間にかセキュリティーサポート期間が終わっていた、不具合が起きる、、、なんて事のないようにしましょう。

また、PHP 8も数年後にはリリースするのではないかと言われています

なるべく新しい情報だけでも入れておくことをオススメします!

この記事を書いた人

【プロフィール】
DX認定取得事業者に選定されている株式会社SAMURAIのマーケティング・コミュニケーション部が運営。「質の高いIT教育を、すべての人に」をミッションに、IT・プログラミングを学び始めた初学者の方に向け記事を執筆。
累計指導者数4万5,000名以上のプログラミングスクール「侍エンジニア」、累計登録者数1万8,000人以上のオンライン学習サービス「侍テラコヤ」で扱う教材開発のノウハウ、2013年の創業から運営で得た知見に基づき、記事の執筆だけでなく編集・監修も担当しています。
【専門分野】
IT/Web開発/AI・ロボット開発/インフラ開発/ゲーム開発/AI/Webデザイン

目次