🐷

【PHP】ざっくりオブジェクト指向 - インスタンスを生成

2022/11/13に公開

インスタンスを生成

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に代入しました。

https://github.com/hyada/object-oriented-programming/blob/15f6b4e4a07b27a839ca65ff1bca6e209ccfc7cb/code/sample3-1.php

インスタンス生成
$person_a = new Person('suzuki', 28);
$person_b = new Person('tanaka', 26);

オブジェクト指向は、車やリモコンなど色々なモノに例えて説明されますが、抽象的すぎて初級プログラマには理解が難しいかもしれません。再利用性を高めるために、関連のあるプロパティ(変数)とメソッド(関数)をまとめる箱がクラス、クラスからインスタンスを生成してオブジェクト型の変数に代入して使うと理解してください。

プロパティをセット

newでインスタンスを生成した時の引数suzuki28は、そのままコンストラクタに引数$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 ~ %

ざっくりオブジェクト指向(全5記事)

  1. オブジェクト指向の必要性
  2. クラスとインスタンスと継承
  3. インスタンスを生成
  4. staticと遅延静的束縛
  5. アクセス権とカプセル化

Discussion

ログインするとコメントできます