【PHP】オブジェクト指向
クラスとインスタンス
クラス(設計図)をもとに生成された実体をインスタンスと呼ぶ。
インスタンスとオブジェクトは同じ意味で使われる。
インスタンスの生成
nee クラス名();でインスタンスを生成する。
<?php
class Menu {
} //Menuクラスを定義
$menu1 = new Menu(); //インスタンスを生成し、$menu1に代入。
$menu2 = new Menu();
$menu3 = new Menu();
?>
プロパティとメソッド
クラス(設計図)には、そのインスタンス(実体)が持つ「プロパティ」と「メソッド」の2つを定義する。
プロパティの定義・プロパティへのアクセス
<?php
class Menu {
public $name; //public $プロパティ名; で定義する
$curry = new Menu();
$curry->name = 'curry';
//$curryインスタンスのnameプロパティに'curry'を代入
esho $curry->name;
//結果:CURRY ($curryインスタンスのnameプロパティを呼び出す)
}
?>
メソッドの定義・メソッドへのアクセス
メソッドとは、それぞれのインスタンスがもつ関数のこと。
<?php
class Menu {
public function hello(){
echo '私はMenuクラスのインスタンスです'; //helloメソッドを定義
}
$curry->hello();
}
?>
変数 $this
メソッド内でインスタンスのプロパティやメソッドにアクセスしたい時は、$thisという変数を使う。
$thisはクラス内のメソッドの定義の中でのみ使える。
$thisはメソッドが呼び出された時に、そのメソッドを呼び出しているインスタンスに置き換えられる。
<?php
class Menu {
public function hello(){
echo '私の名前は'.$this->name.'です';
}
}
$curry = new Menu();
$curry->name = 'curry';
$curry->hello(); //$thisは、メソッドを呼び出している$curryインスタンスに置き換えられる
コンストラクタ
__construct(アンダーバー2つで始まる)というメソッドを定義すると、newを用いてインスタンスを生成する時に、このメソッドが自動的に呼び出される。
class Menu{
public function __construct(){
echo '1つのメニューが作成されました';
}
}
$curry = new Menu();
//結果:1つのメニューが作成されました(コンストラクタが呼び出される)
コンストラクタと引数
__constructメソッドは引数をとることができる。
newを用いてインスタンスを生成する際には引数を与えることができ、その引数の値が__constructメソッドに渡される。
class Menu{
public $name;
public function __construct($name){ //引数'CURRY'を$nameで受け取る
echo $name; //$nameで受け取った引数'CURRY'を出力
}
}
$curry = new Menu('CURRY'); //ここで引数'CURRY'を与える
//結果:CURRY
class Menu{
public $name;
public function __construct($name){
$this->name = $name; //生成されるインスタンスに値をセットする
}
}
$curry = new Menu('CURRY'); //インスタンスの生成時にプロパティをセットすることができる
echo $curry->name;
//結果:CURRY