【PHP】ざっくりオブジェクト指向 - インスタンスを生成
インスタンスを生成
Person
からインスタンスを生成してみましょう。PHPの変数は、数値や文字列などの変数、複数の変数をまとめた配列、オブジェクトの3種類に大別できます。クラスから生成したインスタンスは、オブジェクト型の変数に代入して使います。このインスタンスを変数に代入することが、オブジェクト指向の理解を難しくしているもう一つの要因だと思います。
変数のタイプ | 使い方 |
---|---|
数値、文字列 |
$a=1; $a=’suzuki’;
|
配列、連想配列 |
$a=[1, 2, 3]; $a=[‘name’ => ‘suzuki’];
|
オブジェクト | $a = new Class(); |
Person
のインスタンス生成と、プロパティname
age
を取得するソースコードです。インスタンスはnew
で生成します。2つのインスタンスを生成して、$person_a
$ person_b
に代入しました。
$person_a = new Person('suzuki', 28);
$person_b = new Person('tanaka', 26);
オブジェクト指向は、車やリモコンなど色々なモノに例えて説明されますが、抽象的すぎて初級プログラマには理解が難しいかもしれません。再利用性を高めるために、関連のあるプロパティ(変数)とメソッド(関数)をまとめる箱がクラス、クラスからインスタンスを生成してオブジェクト型の変数に代入して使うと理解してください。
プロパティをセット
new
でインスタンスを生成した時の引数suzuki
や28
は、そのままコンストラクタに引数$name
$age
で渡されます。コンストラクタで、プロパティに引数の値をセットしました。値をセットするために、疑似変数$this
で自インスタンスのプロパティにアクセスします。
public function __construct($name, $age)
{
$this->name = $name;
$this->age = $age;
}
疑似変数$this
もオブジェクト型の変数で、自動でインスタンス自身が代入されています。ですから、$this->name
で自インスタンスのプロパティname
にアクセスできます。疑似変数$this
はインスタンス内で自インスタンスをあらわす変数ですので、インスタンス外では使用できません。
アロー演算子->
で生成したインスタンスのプロパティとメソッドにアクセスします。プロパティーは$a->property
で、メソッドは$a->method()
でアクセスできます。生成したインスタンスのメソッドgetName()
getAge()
をコールしました。これでインスタンスのプロパティname
age
が取得できます。
$person_a_name = $person_a->getName();
$person_a_age = $person_a->getAge();
hiroyuki@blocs ~ % php sample3-1.php
string(6) "suzuki"
int(28)
hiroyuki@blocs ~ %
Discussion