PHP 8 では、コンストラクター プロパティ プロモーション と呼ばれる素晴らしい機能が導入されました。 PHP やプログラミング全般に慣れていない場合、これは少し複雑に聞こえるかもしれません。でも心配しないでください!このブログでは、これが何であるか、なぜ役立つのか、豊富なコーディング例とともにその使用方法を説明します。始めましょう!
PHP 8 より前は、プロパティを含むクラスを作成し、コンストラクターでそれらを初期化するには、かなりの量の繰り返しコードが必要でした。 コンストラクター プロパティのプロモーションを使用すると、PHP 8 では、クラス プロパティをコンストラクター パラメーターで直接宣言して初期化できるようになり、このプロセスが簡素化されます。
コンストラクター プロパティのプロモーションは、コードを数行節約するだけではなく、コードをよりクリーンにし、読みやすく、保守しやすくすることを目的としています。これは、コンストラクターを記述する従来の方法が少し難しいと感じる可能性のある初心者にとって特に価値があります。
クラスとコンストラクターの従来の記述方法と、PHP 8 で導入された新しい方法を比較することから始めましょう。
class Car { public string $make; public string $model; public int $year; public function __construct(string $make, string $model, int $year) { $this->make = $make; $this->model = $model; $this->year = $year; } } $car = new Car('Toyota', 'Corolla', 2020);
この例では、プロパティ ($make、$model、$year) を宣言し、コンストラクター内でそれらを割り当てる必要があります。特に多くのプロパティを持つクラスを扱う場合は、繰り返しが多くなります。
PHP 8 を使用 (コンストラクター プロパティ プロモーション)
class Car { public function __construct( public string $make, public string $model, public int $year ) {} } $car = new Car('Toyota', 'Corolla', 2020);
コンストラクター プロパティのプロモーションを使用すると、コンストラクター パラメーターでプロパティを宣言して割り当てます。その結果、より簡潔で読みやすいクラス定義が作成されます。
コンストラクター プロパティ プロモーションの力を完全に理解するために、さまざまなシナリオでさらに多くの例を検討してみましょう。
例 1: ブック クラスの定義
class Book { public function __construct( public string $title, public string $author, public int $pages, public bool $isAvailable = true ) {} } $book = new Book('1984', 'George Orwell', 328); echo $book->title; // Output: 1984 echo $book->isAvailable; // Output: 1 (true)
この Book クラスでは、isAvailable プロパティのデフォルト値は true です。クラスのインスタンスを作成するときにこのパラメーターを指定しない場合、自動的に true に設定されます。
例 2: オーダー クラスの作成
class Order { public function __construct( public int $orderId, public string $product, public float $price, public string $status = 'pending' ) {} } $order = new Order(123, 'Laptop', 999.99); echo $order->status; // Output: pending $order2 = new Order(124, 'Smartphone', 599.99, 'shipped'); echo $order2->status; // Output: shipped
ここで、Order クラスには、デフォルト値が pending の status プロパティが含まれています。ただし、注文の作成時に別のステータスを指定することで、この値をオーバーライドできます。
例 3: ユーザー プロファイル クラスの構築
class UserProfile { public function __construct( public string $username, public string $email, public int $age, private string $password, protected string $role = 'user' ) {} public function getPassword(): string { return $this->password; } } $userProfile = new UserProfile('johndoe', '[email protected]', 25, 'secret'); echo $userProfile->username; // Output: johndoe echo $userProfile->getPassword(); // Output: secret echo $userProfile->role; // Error: Cannot access protected property
UserProfile クラスでは、パスワード プロパティはプライベートです。つまり、クラスの外部から直接アクセスすることはできません。代わりに、getPassword() メソッドを使用して取得します。ロール プロパティは保護されているため、クラス自体内またはサブクラスからのみアクセスできます。
例 4: コンストラクター プロパティのプロモーションを使用した製品クラス
class Product { public function __construct( public string $name, public float $price, public int $stock = 0 ) {} } $product = new Product('Laptop', 999.99, 10); echo $product->name; // Output: Laptop echo $product->stock; // Output: 10
この例では、コンストラクター プロパティ プロモーションを使用して、株式プロパティのデフォルト値を含む Product クラスを作成する方法を示します。
**定型コードの削減: **プロパティを宣言して初期化するために繰り返しコードを記述する必要はありません。
可読性の向上: クラス定義がより簡潔になり、一目で理解しやすくなりました。
エラーの削減: プロパティの宣言と初期化を組み合わせることで、間違いが発生する余地が少なくなります。
PHP 8 のコンストラクター プロパティのプロモーションは、クラスの記述方法を大幅に改善できる強力な機能です。定型コードを削減し、可読性を高め、コードをより保守しやすくすることにより、これは新人開発者と経験豊富な開発者の両方が高く評価する機能です。
小規模なプロジェクトを構築する場合でも、大規模なアプリケーションを構築する場合でも、コンストラクター プロパティ プロモーションは、よりクリーンで効率的な PHP コードを作成するのに役立ちます。それでは、次のプロジェクトで試してみて、この素晴らしい機能のメリットを楽しんでください!
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3