PHP8.1 アップデート: より強力な属性
PHP8.0 のリリース以来、PHP コミュニティは PHP8.1 の登場を心待ちにしてきました。 PHP8.1 は多くのエキサイティングな新機能と改善をもたらしますが、その中で最も注目に値するのは属性です。属性は PHP 8.1 で導入された新機能で、クラス、メソッド、プロパティにメタデータを追加するためのより洗練された強力な方法を提供します。
これまでは、クラス、メソッド、プロパティに追加のメタデータを追加するために DocBlock コメントをよく使用していました。ただし、ドキュメント ブロックのコメントには、エラーが発生しやすい、無視されやすい、IDE の自動補完には不便であるなど、いくつかの欠点があります。これらの問題を解決するのがアトリビュートの登場です。
属性の威力を実証するために、簡単なサンプル プログラムを作成してみましょう。電子商取引 Web サイトを開発していて、製品を表す Product クラスを定義する必要があるとします。通常のプロパティとメソッドに加えて、項目をより適切に説明するためにいくつかのタグを項目に割り当てたいと考えています。 PHP8.0 より前では、以下に示すように、ドキュメント ブロック コメントを使用してこれらのタグを表すことができました。
class Product { /** * @var string */ private $name; /** * @var float */ private $price; /** * @var array */ private $tags; // ... }
PHP8.1 では、以下に示すように、属性を使用して同じ効果を実現できます。
この例では、対応する属性のタイプを単に表す var という名前の属性を作成します。 #[var] を使用すると、各プロパティの型を明示的に指定できるため、コードの可読性と保守性が向上します。さらに、属性は機能をさらに強化するためにパラメーターの受け渡しもサポートしています。 属性はプロパティで使用するだけでなく、メソッドやクラスでも使用できます。たとえば、キャッシュされた属性をメソッドに追加して、メソッドの結果をキャッシュできることを示すことができます。サンプル コードは次のとおりです。class Product { #[var] private string $name; #[var] private float $price; #[var] private array $tags; // ... }
class ProductService { #[cache] public function getProductById(int $id): ?Product { // 从数据库中获取商品信息... } } #[cache] class CacheManager { // ... }
以上がPHP8.1 アップデート: より強力な属性の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。