PHP7.2.0の新機能と改善された機能
公開: 2018-03-03PHP 7.2.0の新しいリリースには、多くの優れた追加機能が含まれています。 より多くの機能、新しい改善、およびより優れた機能を提供します。 これにより、ユーザーはより優れたコードを記述し、これまでにないようないくつかの興味深い言語機能を使用できるようになります。 この投稿では、PHPの最新のイテレーションで導入された最新の側面を見ていきます。
このアップデートでは、多くの新しい改善が提供されます。 それはより良いコーディングを確実にする多くの機能が付属しています。 PHP7.2.0の新機能は次のとおりです。
- オブジェクト入力のヒント
- さまざまな数えられないオブジェクトのカウント
- 配列キャスト/オブジェクトの数値キーの変換
- Mcrypt拡張機能が削除されました
- パスワードハッシュのArgon2
- オブジェクトとしてのHashContext
- さまざまな正常な値へのより良いTLS定数
- 新しいナトリウム拡張
ご存知のように、Web開発者は通常、PHP言語の使用を好むか嫌うかのどちらかです。 PHPの使用を本当に楽しんでいる人なら誰でも、この新しいコーディングソリューションを間違いなく気に入るはずです。
PHPを使用するのが好きなWeb開発者の方は、PHP7.2.0アップデートの最も重要な新機能について説明します。
PHP7.2.0のコアの改善
PHPの最新アップデートにおける主要な改善点のいくつかを次に示します。
トレイトプロパティのバグの解決策
PHP 7.2.0がリリースされるまで、未修正のトレイトプロパティのバグがありました。 最新のアップデートでは、トレイトがプロパティを定義している場合、互換性が高い(同じ初期値と可視性)場合を除いて、クラスは同じ名前のプロパティを定義できません。 そうしないと、致命的なエラーが発生します。
そのため、PHP7やPHP7.1とは異なり、致命的なエラーが発生することが予想されます。 この動作はPHPの最近のアップデートで修正されており、PHPのドキュメントに記載されているとおりに機能するようになりました。 これで、厳密な比較を行うことができます。 PHP 7.2でスクリプトを実行すると、致命的なエラーが通知されます。
戻り型宣言
PHP 7の最近のアップデートでは、戻り型宣言のサポートがさらに追加されています。 引数型の宣言と同様に、この宣言型も関数から返される可能性のある値の型を示します。 戻り型宣言の場合、引数型宣言の場合と同じ型が提供されます。
PHP 7.2.0では、ユーザーはオブジェクトのデータ型に関して戻り型宣言を使用できるようになっています。
さらに、厳密な型付けは、戻り型の宣言にも影響を与えます。 デフォルトのウィークモードを考慮すると、すべての戻り値は正確なタイプに強制変換されます(それらが異なり、まだそのタイプになっていない場合)。 ただし、ストロングモードでは、すべての戻り値は正確/正しいタイプである必要があります。 それ以外の場合は、 TypeErrorが受信されます。
ただし、親メソッドをオーバーライドする場合、子メソッドは戻り型の宣言を親メソッドの宣言と一致させる必要があります。 ただし、戻り型が親メソッドで定義されていない場合は、子メソッドで定義できます。
ジェネレータの戻り式
PHPのこの機能は、ジェネレーター機能と呼ばれるPHP5.5でリリースされた機能に基づいて構築されています。 これにより、returnステートメントをジェネレーターで使用し、最終的な式を返すことができます。 ただし、参照による返品は制限されています。 値は、ジェネレーターが値を生成し終えたときにのみ使用される新しいジェネレーター「 getReturn()」メソッドを使用して取得できます。
それにもかかわらず、ジェネレーターを使用して最終的な値を明確に返す機能は、間違いなく便利な機能です。 これは、ジェネレーターによって最終値が完全に返されるようにするためです。ジェネレーターは、ジェネレーターを実行するクライアントコードによって特に処理できます。 比較すると、これは、クライアントコードに、最初に最終値が生成されるかどうかをチェックしてから、特に値を処理するように強制するよりもはるかに簡単です。
セッションオプション
Session_start()は、php.iniで設定されたさまざまなセッション構成ディレクティブをオーバーライドする多くのオプションを認識するようになりました。
これらのオプションも拡張され、 session.lazy_writeが容易になります。これはデフォルトでオンのままであり、PHPがセッションデータのみとread_and_closeの変更でセッションファイルを上書きするようにします。 これは、 session_start()にのみ渡されるオプションであり、セッションデータを読み取る必要があることを確認してから、変更せずにセッションをすぐに閉じる必要があります。
PHP7.2.0でのセキュリティの改善
PHP7.2.0で実装された最近のセキュリティの改善は次のとおりです。
パスワードハッシュのアルゴン2アルゴリズム
2005年のパスワードハッシュコンペティションで優勝したArgon2は、強力なハッシュアルゴリズムです。 Argon2は、ユニバーサルインターネット標準として認識されている最中です。 現在、このアルゴリズムは、別のハッシュアルゴリズムであるBcryptよりも費用効果が高く安全であると考えられています。 新しく組み込まれたArgon2は、関数password_hash()を介して使用できます。
Bcryptは1つのコスト要因のみを考慮しますが、新しいArgon2は次の3つのコスト要因を考慮します-
- 時間コスト-ハッシュアルゴリズムの反復回数を定義します
- メモリコスト-ハッシュ中に使用する必要のあるKiB番号を定義します。
- 並列処理係数-ハッシュ中に消費される並列スレッドの数を設定します。
デフォルトのコスト係数は、次の3つの新しい定数によって定義されます。
- PASSWORD_ARGON2_DEFAULT_TIME_COST
- PASSWORD_ARGON2_DEFAULT_MEMORY_COST
- PASSWORD_ARGON2-DEFAULT-THREADS
Lib-sodiumがMcyrptを置き換えます
PHP 7.2.0のもう1つの大きな改善点は、PHPコアから従来のMcrypt暗号化ライブラリを削除し、Libsodiumを追加したことです。
Mcryptはアバンダンウェアであり、言語の成長を制限していると考えられていました。 これが、PHP7.2.0でLibsodiumに置き換えられた理由です。 Libsodiumは、効率的な楕円曲線暗号とともに本物の暗号化を提供する高度な暗号化ライブラリです。
Libsodiumは、サイドチャネルの脆弱性を防ぐためにセキュリティの専門家によって実装される慎重に選択されたアルゴリズムで構成されています。 言い換えると、Libsodiumは、復号化、暗号化、パスワードハッシュ、署名などのためのクロス言語およびクロスプラットフォームのライブラリです。
非推奨の機能と機能
以下は、PHP8.0のリリース前に削除される予定のPHP7.2.0の非推奨の関数と機能の一部です。
Gmp_random()はプラットフォームに依存する機能と見なされており、廃止される可能性があります。 代わりに、 gmp_random_rage()とgmp_random_bits()が使用されます。
(未設定)キャストは、通常nullを返す別の式であるため、役に立たないと見なされます。
Each()は、配列のようにforeach()を反復処理するために使用されますが、速度が速いため、 foreach()が推奨されます。
PHP 5.1のspl_autoload_registerは、 _autoload関数に取って代わりました。 ただし、コンパイル中に関数が検出されると、非推奨になる可能性があります。
mbstring.fucc_overloadも非推奨に設定されています。
assert()関数は、指定されたアサーションを確認し、 FALSEの結果があった場合に適切なアクションを実行します。 文字列引数でのassert()の使用は、RCEの脆弱性を引き起こすため、非推奨になります。
$ php_errormsg変数は、致命的でないエラーを受信している間、ローカルスコープに組み込まれます。 しかし現在、PHP 7.2.0のリリースでは、代わりにerror_clear_lastとerror_get_lastが使用されます。
$ errcontextは、この機能が最適化の問題を引き起こしているため、廃止される可能性があります。 $ errcontextは、現在のスコープ内のすべてのオブジェクトと参照を変更するために使用されるため、この機能はほとんど使用されません。
Create_function()には多くのセキュリティ問題があります。 さらに、メモリ使用量とパフォーマンスの低下の問題もあります。
WordPress開発者がPHP7.2.0を使用する必要があるのはなぜですか?
最近のPHPへのアップグレードにより、新しい機能と改善されたセキュリティ対策がもたらされます。 これには、最新の暗号化、コア機能への追加、さまざまなサイトの読み込み速度の高速化などの要因が含まれる場合があります。
PHPを使用する利点
PHPは互換性の高い言語であり、ほとんどすべてのデータベースおよびサーバーのグローバル標準(つまり、PostgreSQL、MySQL、Sybase、Oracle、Microsoft SQL Server、およびInformix)で使用できます。 オープンソースコミュニティに支えられた高速パフォーマンスを提供します。
ファイルや動的ページの生成など、さまざまな目的で使用されます。 PHPを使用すると、サイトデータベースで情報を管理および保存できます。 これにより、ユーザーはセキュリティ機能を使用してデータを暗号化し、Webサイトへの不正アクセスを制限できます。
PHPは、 Yahoo、Facebook、Wikipediaなどの多くの有名なWebサイトで使用されています。
さらに重要なことに、PHP 7.2.0の最新のアップデートは、重要なセキュリティの改善、エキサイティングな新機能、およびパフォーマンスの強化を提供します。
PHP7.2.0のパフォーマンス
フェニックスのベンチマークによると、PHP 7.2.0は7.1より13%速く、7.0よりほぼ20%速くなっています。 PHP 2.6(PHPユーザーの40%がまだ使用しています)と比較すると、ほぼ25%高速です。
これらの統計と調査結果をサポートする多くのテストがあります。 公式のPHPベンチマークは、PHP7が5.6の2倍の効率と2倍の速度であることを示しています。 PHP7のレイテンシーは半分です。 また、Kinstaのような他のベンチマークは、PHP7が以前のバージョンよりも最大3倍高速になる可能性があることを示唆しています。
上で説明したように、PHP 7.2.0のパフォーマンスが向上する主な理由は、高度な機能が含まれていることと、古い関数が廃止されていることです。 それこそが、このバージョンのPHPをWordPressユーザーに最適なものにしている理由です。 ただし、開発者はコードをチェックし、非推奨の関数を更新して、すべてに互換性があることを確認する必要があります。
PHP7.2.0のセキュリティサポート
PHP 7.2.0は、セキュリティサポートを提供しなくなりました。 ただし、重要なサポートは2018年末まで引き続き利用できます。PHPコミュニティは、マイナーな問題やバグのサポートを提供しなくなりました。 幸いなことに、PHP 7.2.0の最新の更新により、高度なセキュリティ更新が適切に機能し、プロジェクトはPHPコミュニティによって継続的にサポートされます。
Libsodiumは、古いPHPからPHP 7.2.0に移行した、最も重要で最も改善された機能です。 幸い、Libsodiumは非常に簡単に更新できます。
PHP 7.2.0に更新する場合は、コードが統合テストと単体テストで構成されていることを確認してください。 このようなテストは、実際の環境でバグとして表示される前に、アプリケーション関連の問題を検出するのに役立ちます。
手短に
PHP 7.2.0は、PHP5.6などの以前のバージョンと比較して間違いなくメジャーアップグレードです。 コードをPHP5.6からPHP7にアップグレードすると、コードが依存するライブラリとコード自体の両方で、いくつかの非互換性に遭遇する可能性があります。 ただし、PHP 7.2を採用することの利点は、努力する価値があります。
PHP 7.2は古いバージョンのPHPよりもはるかに高速であるため、これにより、ユーザーはPHP言語の高度なコードを実装することにより、Webサイトユーザーに改善されたサービスを提供できます。
では、新しいPHP 7.2に切り替える準備はできていますか? まだ更新していない場合は、移行を開始する良い機会です。 コードを確認し、スクリプトをアップグレードするときが来ました。
以下のコメントセクションで、PHP7.2.0の新しく改善された機能をどのように見つけたかをお知らせください。