コンストラクタ (__construct)
CoddyのPHPジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 7/91。
__construct メソッドは、新しいオブジェクトを作成したときに自動的に実行される特別なメソッドです。オブジェクトのプロパティを初期化します。
以下は、コンストラクタを持つクラスの例です:
<?php
class Dog {
public $name;
public $breed;
public function __construct($name, $breed) {
$this->name = $name;
$this->breed = $breed;
}
}__construct メソッドはパラメータを受け取り、$this を使用してそれらをプロパティに代入します。
コンストラクタを使用してオブジェクトを作成します:
$rex = new Dog("Rex", "German Shepherd");
$buddy = new Dog("Buddy", "Golden Retriever");new Dog("Rex", "German Shepherd")を呼び出すと、PHPは自動的に__constructを呼び出し、引数を渡します。
コンストラクタによって設定されたプロパティにアクセスします:
echo $rex->name . "\n";
echo $rex->breed . "\n";
echo $buddy->name . "\n";
echo $buddy->breed . "\n";出力:
Rex
German Shepherd
Buddy
Golden Retrieverデフォルトの引数を持つコンストラクタを作成することもできます:
class Cat {
public $name;
public $age;
public function __construct($name, $age = 1) {
$this->name = $name;
$this->age = $age;
}
}
$fluffy = new Cat("Fluffy", 3);
$whiskers = new Cat("Whiskers"); // age defaults to 1
echo $fluffy->name . " is " . $fluffy->age . " years old\n";
echo $whiskers->name . " is " . $whiskers->age . " years old\n";出力:
Fluffy is 3 years old
Whiskers is 1 years old重要なポイント: __construct メソッドは、オブジェクトが作成される際に、すべてのオブジェクトが初期データで適切にセットアップされることを保証します。これにより、オブジェクト作成後に手動でプロパティを設定する手間が省けます。
チャレンジ
簡単本のシステムを実装するために、PHPファイル(book.phpとdriver.php)が与えられています。
あなたのタスクは以下の通りです:
book.php内のBookクラスを完成させ、$title、$author、および$pagesプロパティを初期化する__constructメソッドを実装してください。driver.phpで、"Harry Potter"(著:"J.K. Rowling"、400ページ)の本のオブジェクトをインポートして作成してください。
各ファイル内の TODO コメントに従ってください。
チートシート
__construct メソッドは、新しいオブジェクトを作成するときに自動的に実行され、そのプロパティを初期化する特殊なメソッドです。
クラス内でコンストラクタを定義します:
<?php
class Dog {
public $name;
public $breed;
public function __construct($name, $breed) {
$this->name = $name;
$this->breed = $breed;
}
}コンストラクタを使用してオブジェクトを作成します:
$rex = new Dog("Rex", "German Shepherd");
$buddy = new Dog("Buddy", "Golden Retriever");コンストラクタによって設定されたプロパティにアクセスします:
echo $rex->name; // Rex
echo $rex->breed; // German Shepherdコンストラクタはデフォルトの引数値を持つことができます:
class Cat {
public $name;
public $age;
public function __construct($name, $age = 1) {
$this->name = $name;
$this->age = $age;
}
}
$fluffy = new Cat("Fluffy", 3);
$whiskers = new Cat("Whiskers"); // age defaults to 1自分で試してみよう
<?php
require_once 'book.php';
// TODO: 次の内容でBookオブジェクトを作成してください:
// タイトル: "Harry Potter"、著者: "J.K. Rowling"、ページ数: 400
$myBook = ?;
echo "'" . $myBook->title . "' by " . $myBook->author . ", " . $myBook->pages . " pages\n";
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。