PHP 8:完全ガイド

公開: 2021-01-05

2020年11月26日、私たちはPHP 8の新しい世界に入りました。PHPを更新するたびに、まったく新しい主要な機能が多数追加されます。 カジュアルユーザーの大多数にとってすべてのアップデートが重要であるとは限りませんが、他のアップデートでさえ、経験豊富なWordPress開発者の大多数にとってニッチすぎます。

ただし、操作している開発のレベルに関係なく、速度の向上や既存のコードに害を及ぼす可能性のある変更の中断など、新しいリリースの側面は、日常のワークフローに悪影響を与える可能性があります。

このガイドでは、PHP8のこの新しいリリースで最も重要な変更点について説明します。詳しく見ていきましょう。

このガイドでは

    PHPの更新が行われる理由

    エンジンとして、PHPは絶えず変化しています。 コードを最適化し、PHPの操作をより簡単かつ簡単にするために、新しいビットは常に変更または追加されています。

    WordPressプラグインとテーマの作成者は、Webサイトの開発者とともに、PHPの変更が発生したときに常にそれを把握する必要があります。 そうすることで、ゲームの一歩先を行くことができ、さらにいくつかの更新が行われた後、ドキュメントのページに目を通すのを避けることができます。

    PHPの新しいバージョンはそれぞれ、開発環境に前向きな変化をもたらすことを目的としています。 残念ながら、特定の調整が既存のコードに害を及ぼす可能性がある場合があります。

    互換性のない、後方の、または古い属性が新しいPHP更新と衝突すると、サイト全体が破損したり、サイトの一部が機能しなくなったりする可能性があります。

    カスタムコード内で直接対処できるように、リリースされる可能性のある重大な変更を把握しておくことをお勧めします。 これは、より最適化された式を持つ新しいコードを利用するのにも役立ちます。

    ただし、キャリアの中でカスタムコードに触れたことがなくても、WordPressダッシュボードに更新されたバージョンのPHPのWordPress PHP更新が必要な通知が追加された場合は、アップグレードするかどうかを決定する必要があります。か否か。

    常に、その質問に対する答えはほとんど常に「はい」です。 ただし、その前に、主要な機能の変更を確認し、問題を引き起こす可能性のあるものがないことを確認するのが賢明です。 古いことわざにあるように、「後悔するよりも安全である方が良い」。

    PHP 8

    PHP8リリースの新機能

    このリリースのPHPは、決して最大のアップデートではありません。 しかし、私たちが見なければならないいくつかのエキサイティングな変更がまだあります。

    ある意味で、PHP8が比較的小さなアップデートであるというのは少し安心です。 これは、既存のコードに問題を引き起こす可能性のある重大な変更が少ないことを意味します。

    言い換えれば、現在のPHPリリースでは、問題のトラブルシューティングに何時間も費やすことなく、いくつかの優れた新機能が提供されています。

    このバージョンのPHPにはいくつかの追加の変更が加えられていますが、このガイドでは最も関連性の高いものについて説明します。

    ジャストインタイム(JIT)コンパイラ

    PHPの新しいバージョンへの最もエキサイティングで確かに最大の追加は、ジャストインタイム(JIT)コンパイラです。

    ご存知かもしれませんが、PHPはインタプリタされる言語です。 これは、コンパイル後に事前に決定された起動時間で実行されるのではなく、リアルタイムで実行されることを意味します。

    JITがPHPのテーブルにもたらすのは、コンパイルされたコードです。 コンパイルされたコードを使用すると、特定の状況でパフォーマンスが向上します。

    多くのPHP開発者のようであれば、おそらくWebアプリを使用しています。 残念ながら、JITはWebアプリにはあまり役立ちません。 しかし、次のようなタスクに関しては、大幅な改善が見られます。

    • データ分析
    • 3Dレンダリング
    • AI
    • 実行に時間がかかる追加のプロセス

    これらは必ずしも現在最も一般的なPHPアプリケーションではありませんが、将来を見据えた開発者は間違いなくPHPをさらに活用しています。

    JITコンパイラーは、PHPをより柔軟にするのに役立ちます。

    実際、JITは、PHPの視野を広げ、PHPを新しい目的に使用することに関心のある新しい開発者を呼び込むことがほぼ保証されています。

    既存のプロジェクトの場合、それはおそらく多くのことをするつもりはありません。

    JITを実装する前に、分離された環境でJITをテストして、パフォーマンスに改善があるかどうかを確認してください。

    属性

    新しいバージョンのPHPは属性をサポートしています。 これらは、パラメーター、クラス、関数など、コードに追加する小さなメタデータです。

    これは、標準の回避策としてdocblockを使用する必要がなくなったことを意味します。 これは小さな変更のように聞こえますが、実際にはPHP開発者の生活がはるかに楽になります。

    これで、個々のコードの任意の部分に任意の数の属性を追加し、useステートメントを使用してそれらをインポートできます。

    属性にパラメータを追加することもできます。

    コードに属性を追加するには、属性を囲む2つの「より小さい」記号と2つの「より大きい」記号を追加するだけです。

    属性には下位互換性がないことに注意することが重要です。 古いバージョンのPHPに移植すると、エラーが発生します。

    ご存知かもしれませんが、docblockを使用した標準の回避策は完全に機能します。 しかし、それは常にかなり不格好でした。 新しいバージョンのPHPでは、属性を直接追加できるようになりました。

    これはPHPへの小さな追加ですが、その影響は非常に大きくなります。

    新しい一致式

    Switchステートメントはifステートメントのより堅牢なバージョンでした。 ただし、PHPの新しい一致式は、その概念をさらに改善します。

    これはより短く、より厳密であり、バグをより適切にキャッチするのに役立ちます。 また、条件を組み合わせて、breakステートメントを必要としません。

    これらの点で、新しい一致式は著しく改善されています。

    Switchには、複数の式を使用できるため、一致よりも優れています。 ただし、それに加えて、一致式を読み取ることを検討してください。

    これまでのところ、それらはあなたが利用したいと思うかもしれない優れた代替品のように見えます。

    共用体タイプ

    PHPの重要な部分の1つは型です。変数をブール値、整数、nullなどとして割り当てます。

    このリリースのPHP以前は、単一の型でのみ変数を割り当てることが許可されていました。 PHP 8では、2つ以上の型を割り当てることができます。これは、共用体型とも呼ばれます。

    例として、float型と整数型を割り当てることができ、どちらかを利用できます。 これらは、float | intなどのタイプ間の行で指定されます。

    もちろん、voidは相互に排他的であるため、他のタイプと組み合わせることはできません。

    float | floatなどの冗長または重複タイプも機能しません。

    古いバージョンのPHPでは、PHPDocアノテーションを使用して、機能的な共用体型を作成することができました。 これで、そのような回避策をスキップして、変数に複数のタイプを割り当てることができます。

    静的リターンと混合タイプ

    開発者として、PHPが返す関数が関数の値を返すために使用されることは一般的な知識です。 このリリース以前は、静的型を使用するオプションはありませんでした。

    「親」と「自己」は有効な戻り値タイプでしたが、「静的」はそうではありませんでした。 この問題は、新しいPHPバージョンで完全に対処されました。

    信じられないほど一般的なユースケースではありませんが、それが発生した場合は、アクセスできることを間違いなく嬉しく思います。

    また、新しい混合タイプもあります。 これは、PHPに存在する他のすべての型を表すため、より正確に疑似型として記述される場合があります。

    複数の異なるタイプで作業する必要がある状況を処理する場合に最適です。

    特定のタイプを選択しない場合は、混合がデフォルトになります。

    多くの場合、混合するよりも新しい共用体型を使用する方が適切です。 これは、より具体的にしたいと思う可能性が高いためです。

    ただし、これは引き続き目的を果たします。

    現実には、これらはどちらも共用体タイプほど大きくはありませんが、間違いなく改善を示しています。

    新しいPHP8関数

    新しいバージョンのPHPには、操作可能な新しい関数が付属しています。

    • str_starts_withおよびstr_ends_with–これは、文字列が特定の行で終了するか開始するかをチェックします
    • fdiv –これにより、ゼロ除算時に一貫して反応する除算が可能になります
    • str_containsstr_starts_withおよびstr_ends_withに似ていますが、完全な文字列をチェックします
    • get_debug_typegettypeと同様に機能しますが、クラス名などの追加情報を返します
    • get_resource_id –これにより、データベース接続などのリソースのIDを簡単に取得できます。
    • preg_last_error_msg –平易な言語で読めるエラーメッセージを返します

    これらの新しい機能のいくつかをテストして、それらを最大限に活用する方法を確認してください。

    名前付き引数

    好きな人もいれば、軽蔑する人もいます。 いずれにせよ、名前付き引数は新しいバージョンのPHPにあります。

    引数を使用すると、データを関数に渡すことができます。 名前付き引数を使用すると、順序ではなく引数名を渡すことで同じことができます。

    それらを順序付けられた引数と組み合わせることができます。 ただし、必要に応じてオプションのパラメータをスキップすることができます。

    実際には、これはよりクリーンなコードといくつかのエラーを意味します。 結局のところ、コーディングがきついほど良いのです。 作業がはるかに簡単です。

    これにより、引数名の変更と下位互換性で問題が発生する可能性があり、古いPHPバージョンで破損が発生する可能性があります。 しかし、多くの開発者やプログラマーにとって、これらの名前付き引数は歓迎すべき変更です。

    PHP8の重大な変更

    新しいPHPリリースには、いくつかの重大な変更が含まれています。 これにより、古いバージョンのPHPにアップグレードまたは移植して戻すと、エラーが発生する可能性があります。 この重大な変更のリストを見て、どの変更があなたに影響を与えるかを確認してください。

    1. エンジン警告は、通知、警告、致命的なエラーなど、適切なレベルの重大度が表示されるように再分類されました。 これは、多くのプロジェクトに影響を与えない小さな重大な変更であると考えてください。
    2. TypeErrorは、内部関数に定期的に表示されるようになりました。 これは、私たちがまだ認識している以上に下位互換性に影響を与えますが、それでも確かな変化です。
    3. 以前はサイレントに設定され無視されていたエラー報告レベルに複数の変更が加えられました。 つまり、これまで見たことのない新しいエラーが伝播するはずです。
    4. ソートはより信頼性が高く、安定しています。 PHP 7は並べ替えにいくつかの大きな変更を加えましたが、最新の更新では既存のコードへのダメージがはるかに少なくなっています。
    5. 名前空間の名前は単一のトークンになりました。 内部に空白を含めることはできません。 この変更による影響は小さく、修正も簡単です。
    6. 以前のバージョンのPHPでは、クラスと一致する名前を持つメソッドはコンストラクターとして解釈されていました。 新しいバージョンでは、__ construct()メソッドを使用する必要があります。

    他にも、問題を引き起こすことはめったにない小さな更新が数十あります。 一般的に言って、現在のPHPアップデートでは多くの問題は発生しません。

    WordPressでPHPバージョンをアップグレードする

    WordPress開発者は、PHPのバージョンを最新の状態に保つことがいかに重要かを知っています。 WordPressユーザーのかなりの部分がまだPHP5.6で実行されていることを知っているのは憂慮すべきことですが、これは大きな責任です。

    PHP 7.4を実行していて、完全に最新であると思っていたとしても、今が間違いなく最新のPHPバージョンに更新するときです。

    古いバージョンのPHPでWordPressサイトを実行することは、セキュリティ上の大きなリスクです。 古いバージョンのPHPには、ハッカーが定期的に利用する悪用可能なセキュリティフローがあります。

    既存のポットホールにパッチを当てる唯一の方法は、PHPを常に完全に最新の状態に保つことです。

    また、強力なWordPressセキュリティプラグインを実行して、セキュリティ保護を強化することもできます。

    ボーナスコンテンツを入手する:WordPressセキュリティのガイド
    ここをクリック

    PHPを更新するもう1つの理由は、速度のためです。 更新のたびに、速度が速くなり、機能が最適化されます。 もちろん、最大の顕著な違いはPHP5.6と7.4の間でした。 しかし、最新のアップデートで速度が向上していることに間違いなく気付くでしょう。

    互換性は、WordPressでPHPを最新の状態に保つことが重要である最後の理由です。

    古いバージョンのPHPは、グリッチを引き起こしたり、Webサイトを完全に破壊したりする可能性のあるさまざまな問題を引き起こす可能性があります。

    それ以外にも、機能するために完全に最新のPHPバージョンを必要とするテーマとプラグインがあります。

    更新を実行する前に、更新の実行後に競合が発生した場合に備えて、WordPressバックアッププラグインが実行されていることを確認してください。

    PHPのバージョンをアップグレードするのは非常に簡単です。 cPanelまたは使用しているホストの管理ダッシュボードにログインし、PHPバージョンマネージャーを見つけて最新バージョンにチェックマークを付けるだけです。 ただし、更新を実行する前に、ホストが最新のPHP更新をサポートしていることを確認してください。 一部は古いソフトウェアで実行されている可能性があります。

    PHPとWordPressの詳細については、WordPressとPHP8に関するWordPress.orgの公式ドキュメントを確認してください。

    まとめ:PHP8とPHPの未来

    PHP 7.0 – 7.4のようなモンスターのアップデートではありませんが、PHP 8には、利用できるものがたくさんあります。

    JITコンパイラーから新しい属性、一致式、その他の開発者向けの便利な関数まで、この重要な新しいバージョンのPHPに慣れる時が来ました。

    この更新のどの部分が、日常のワークフローで最も多く使用されると予想しますか?