2020 年末に、PHP コミュニティは、多くの新機能と改善点を含む最新バージョンの PHP8.0 をリリースしました。最も注目すべき機能の 1 つは、コードの作成を簡素化する機能であるプロパティ プロモーションです。この記事では、属性ブーストを詳しく見て、その利点を理解します。
属性向上とは何ですか?
属性ホイスティングは、クラス属性宣言にアクセス制御修飾子を追加することでクラス属性の定義を簡素化する新しいプログラミング構文です。 PHP 8.0 より前は、各プロパティをクラスの先頭で定義し、その可視性とデフォルト値を含める必要がありました。これにより、特にクラスに多数の属性がある場合、コードの重複が発生することがよくあります。
プロパティのホイスティングでは、デフォルト値を指定し、その可視性を指定しながら、クラス プロパティを宣言できます。このプロセスは通常、次の構文に従います。
class Car { // PHP 8.0 and above public function __construct( private string $model, private string $year, private string $brand = 'Toyota' ){} // earlier versions of PHP public function __construct( string $model, string $year, string $brand = 'Toyota' ){ $this->model = $model; $this->year = $year; $this->brand = $brand; } }
上記のコードでは、Car クラスを定義し、コンストラクターを通じてクラスの 3 つのプロパティ ($model、$year、$brand) を指定しました。新しい構文を使用してプロパティ宣言を簡素化し、コードの記述と読み取りを容易にしました。クラスの実際のニーズに応じて、オプションで $brand 属性をデフォルト値「Toyota」に設定できます。
プロパティの昇格の前に、より伝統的な構文式を使用すると、次のようになります。
class Car { //PHP 7 and earlier public $model; public $year; public $brand; public function __construct(string $model, string $year, string $brand='Toyota'){ $this->model = $model; $this->year = $year; $this->brand = $brand; } }
この例では、少しコードを追加しています。まず public キーワードを使用してクラスのすべてのプロパティを宣言し、次にそれらの値をパラメーターに渡された値またはコンストラクターのデフォルト値に設定します。この単純な例では、プロパティのホイスティングの利点が明らかではないように見えますが、この簡潔な構文は、より複雑なクラスを操作する場合に特に役立ちます。
プロパティホイスティングの利点
プロパティホイスティングにより、クラスプロパティを手動で入力する作業が不要になり、全体のコードベース より読みやすくなりました。 PHP の以前のバージョンでは、クラスが使用されるにつれてこのセクションが大きくなる傾向にあったため、クラス宣言の先頭ですべてのプロパティを設定することが徐々に拡張され、維持されました。コードを何度も記述する必要がなくなり、クラスのより重要な部分に集中できるようになりました。
プロパティのプロモーションの場合、各プロパティの型とデフォルト値が 1 か所に表示されます。これにより、コードの可読性と保守性が大幅に向上します。場合によっては、属性の値に、状況に応じて異なる効果を持たせる必要がある場合があります。この場合、属性のプロモーションを使用すると、コードがより簡潔で読みやすくなります。
プロパティのホイスティングにより、PHP 開発者はコードをより速く作成できるようになり、クラス内のすべてのプロパティを定義する反復作業が軽減されます。これは、大量のコードを扱う場合に非常に重要であり、時間を節約してより重要なタスクに取り組むことができます。
結論
属性のプロモーションは、PHP 8.0 で導入された重要な変更です。これは、多数のクラスを定義する必要がある開発者にとって、非常に便利で簡素化された機能です。この記事では、属性ブーストの使用法と利点について詳しく説明します。プロパティホイスティングの使用を開始するには、自動的に役立つ適切なコード管理ツールまたは IDE が必要です。
以上がPHP8.0の新機能:属性の改善の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。