ホームページ >バックエンド開発 >PHPチュートリアル >PHP ews: コンストラクター プロパティのプロモーション
Constructor Property Promotion は、クラス内でのプロパティの宣言と初期化を簡素化する PHP 8 で導入された機能です。 PHP 8 より前では、クラス プロパティを明示的に宣言し、コンストラクター内で初期化する必要がありました。この機能を使用すると、コンストラクターのパラメーター リストでプロパティを直接宣言して初期化できるため、定型コードが削減されます。
従来の構文 (PHP 8 より前)
class Product { private string $name; private float $price; public function __construct(string $name, float $price) { $this->name = $name; $this->price = $price; } }
コンストラクター プロパティのプロモーション構文 (PHP 8)
class Product { public function __construct( private string $name, private float $price ) {} }
特典
定型コードを削減します:
読みやすさの向上:
不変性をサポートします:
メモ
可視性修飾子:
デフォルト値:
class Product { public function __construct( private string $name = 'Unnamed', private float $price = 0.0 ) {} }
プロモートされたプロパティと非プロモートされたプロパティの混合:
class Product { private string $category; public function __construct( private string $name, private float $price ) { $this->category = 'General'; } }
使用例
コンストラクター プロパティのプロモーションは、主な目的がデータの保存であるDTO (データ転送オブジェクト)のような単純なクラスに特に役立ちます。
class CustomerDTO { public function __construct( public string $name, public string $email, public ?string $phone = null ) {} }
結論
コンストラクター プロパティのプロモーションは、生産性を向上させ、コードの複雑さを軽減する PHP 8 の強力な機能です。これは、簡潔かつ明確な初期化が必要な、複数のプロパティを持つクラスに最適です。
PHP 8 では、属性 (アノテーションとも呼ばれます) を コンストラクター プロパティ プロモーション とシームレスに組み合わせることができ、特にメタデータをプロパティに関連付ける必要があるシナリオで、よりクリーンで表現力豊かなコードが得られます。
コンストラクタープロパティプロモーションとの統合
コンストラクター プロパティのプロモーションを使用すると、プロパティはコンストラクターで直接定義されます。属性を使用すると、プロパティを個別に宣言することなく、これらのプロパティを装飾し、コンテキスト情報を追加できます。
実践例
DTO (データ転送オブジェクト) で作業していて、プロパティをデータベース列にマップするとします
コンストラクタープロパティのプロモーションなし
class Product { private string $name; private float $price; public function __construct(string $name, float $price) { $this->name = $name; $this->price = $price; } }
コンストラクタープロパティプロモーション付き
class Product { public function __construct( private string $name, private float $price ) {} }
統合の利点
削減定型コード:
よりクリーンで読みやすいコード:
反射を伴う柔軟性:
リフレクションを使用した属性へのアクセス
class Product { public function __construct( private string $name = 'Unnamed', private float $price = 0.0 ) {} }
コードの説明
列属性の定義:
コンストラクターパラメータへの属性の追加:
リフレクションの使用:
コンストラクターへのアクセス:
パラメータの反復処理:
属性の取得:
属性のインスタンス化:
メタデータの印刷:
出力:
class Product { private string $category; public function __construct( private string $name, private float $price ) { $this->category = 'General'; } }
一般的な使用例
データベース マッピング:
データ検証:
シリアル化/逆シリアル化:
結論
Constructor Property Promotion と Attributes の統合により、PHP でクラスを構造化するための強力かつ簡潔な方法が提供されます。これは、ORM、検証、シリアル化などのメタデータに依存するシステムで特に便利で、コードの表現力が高まり、体系化されます。
以上がPHP ews: コンストラクター プロパティのプロモーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。