プロパティ
CoddyのPHPジャーニー「オブジェクト指向プログラミング」セクションの一部 — レッスン 6/91。
プロパティはクラスに属する変数です。これらはオブジェクトの状態に関する情報を保持します。PHPでは、プロパティはpublicのような可視性キーワードを使用してクラス内で宣言する必要があります。
プロパティには、すべてのオブジェクトで共有されるデフォルト値を持たせることができます:
<?php
class Student {
public $school = "PHP Academy"; // デフォルト値
public $name;
public $age;
}デフォルト値のないプロパティは、設定するまで null になります。
メソッドと $this を使用してプロパティ値を設定できます:
class Student {
public $school = "PHP Academy";
public $name;
public $age;
public function setInfo($name, $age) {
$this->name = $name; // インスタンスデータを設定
$this->age = $age; // インスタンスデータを設定
}
}学生オブジェクトを作成し、それぞれのデータを設定します:
$student1 = new Student();
$student2 = new Student();
$student1->setInfo("Alice", 20);
$student2->setInfo("Bob", 22);プロパティにアクセスします:
echo $student1->name . "\n"; // Alice
echo $student2->name . "\n"; // Bob
echo $student1->school . "\n"; // PHP Academy
echo $student2->school . "\n"; // PHP Academy出力:
Alice
Bob
PHP Academy
PHP Academy主な違い: デフォルト値を持つプロパティ($schoolなど)は、すべてのオブジェクトで同じ値から始まります。メソッドを通じて設定されるプロパティ($nameや$ageなど)は、各オブジェクトに対して一意です。
チャレンジ
簡単student.php 内の Student クラスを完成させてください:
- デフォルト値を
"PHP Academy"としたプロパティ$schoolを宣言してください。 - プロパティ
$nameと$ageを宣言してください(デフォルト値なし)。 $nameと$ageを引数に取り、$thisを使用してそれらを設定するsetInfoメソッドを追加してください。
driver.php ファイルは、2人の生徒を作成し、その情報を出力することでクラスをテストします。
チートシート
プロパティはクラスに属する変数であり、オブジェクトの状態に関する情報を格納します。これらは、publicのような可視性キーワードを使用してクラス内で宣言する必要があります。
プロパティには、すべてのオブジェクトで共有されるデフォルト値を設定できます。
<?php
class Student {
public $school = "PHP Academy"; // default value
public $name;
public $age;
}デフォルト値のないプロパティは、設定されるまでnullとして開始されます。
プロパティ値を設定するには、メソッドと$thisを使用します。
class Student {
public $school = "PHP Academy";
public $name;
public $age;
public function setInfo($name, $age) {
$this->name = $name;
$this->age = $age;
}
}オブジェクトを作成し、個別のデータを設定します:
$student1 = new Student();
$student1->setInfo("Alice", 20);
echo $student1->name; // Alice
echo $student1->school; // PHP Academyデフォルト値を持つプロパティは、すべてのオブジェクトで同じ状態で開始されます。メソッドを通じて設定されたプロパティは、各オブジェクトに対して固有です。
自分で試してみよう
<?php
require_once 'student.php';
$student1 = new Student();
$student2 = new Student();
$student1->setInfo("Alice", 20);
$student2->setInfo("Bob", 22);
echo $student1->name . " is " . $student1->age . " at " . $student1->school . "\n";
echo $student2->name . " is " . $student2->age . " at " . $student2->school . "\n";
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。