【PHP】クラス内のメソッドの設定方法(メンバメソッド)
前回、クラスを元にインスタンス化した際の実行プログラム、「コンストラクター」の設定を行いました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?php class Player { //クラスを宣言 public $name; //「name」変数を宣言 public $hp; //「hp」変数を宣言 public $mp; //「mp」変数を宣言 public function __construct($name , $hp , $mp){ //コンストラクタ(インスタンス化した際の初期値入力設定) $this->name = $name; //作成するオブジェクトの「name」項目に変数「$a」を代入する $this->hp = $hp; //作成するオブジェクトの「hp」項目に変数「$b」を代入する $this->mp = $mp; //作成するオブジェクトの「name」項目に変数「$c」を代入する echo $this->name."さん、この世界にようこそ!<br>"; } public function denote_hp(){ //プレイヤーのHPを表示するメソッド echo $this->name."のHPは".$this->hp."です。<br>"; } public function denote_mp(){ //プレイヤーのMPを表示するメソッド echo $this->name."のMPは".$this->mp."です。<br>"; } } $tanaka = new Player("tanaka" , 50 , 20); //「Player」クラスから「$tanaka」オブジェクトを作成し、各項目に初期値を設定する $suzuki = new Player("suzuki" , 75 , 5); //「Player」クラスから「$suzuki」オブジェクトを作成し、各項目に初期値を設定する ?> |
しかしこれまで学んだように、オブジェクトとは「変数とメソッド(関数)をまとめたもの」でしたね。今のままでは変数の設定しかできていないので、メソッドの設定方法を学びます。ちなみになんですが、クラス内で使用できる共通のメソッドのことを「メンバメソッド」と呼びます。
メンバメソッドの設定
|
1 2 3 |
public function メソッド名( ){ プログラムの処理内容 } |
それでは実際にサンプルを作成します。今回は下記の二つのメソッドを作成してみます。
|
1 2 3 4 5 6 7 |
public function denote_hp(){ //プレイヤーのHPを表示するメソッド echo $this->name."のHPは".$this->hp."です。<br>"; } public function denote_mp(){ //プレイヤーのMPを表示するメソッド echo $this->name."のMPは".$this->mp."です。<br>"; } |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php class Player { //クラスを宣言 public $name; //「name」変数を宣言 public $hp; //「hp」変数を宣言 public $mp; //「mp」変数を宣言 public function __construct($name , $hp , $mp){ //コンストラクタ(インスタンス化した際の初期値入力設定) $this->name = $name; //作成するオブジェクトの「name」項目に変数「$a」を代入する $this->hp = $hp; //作成するオブジェクトの「hp」項目に変数「$b」を代入する $this->mp = $mp; //作成するオブジェクトの「name」項目に変数「$c」を代入する echo $this->name."さん、この世界にようこそ!<br>"; } public function denote_hp(){ //プレイヤーのHPを表示するメソッド echo $this->name."のHPは".$this->hp."です。<br>"; } public function denote_mp(){ //プレイヤーのMPを表示するメソッド echo $this->name."のMPは".$this->mp."です。<br>"; } } $tanaka = new Player("tanaka" , 50 , 20); //「Player」クラスから「$tanaka」オブジェクトを作成し、各項目に初期値を設定する $suzuki = new Player("suzuki" , 75 , 5); //「Player」クラスから「$suzuki」オブジェクトを作成し、各項目に初期値を設定する $tanaka->denote_hp(); //「$tanaka」のHPを表示する $suzuki->denote_mp(); //「$suzuki」のMPを表示する ?> |
実行結果は下画像の通りです。
プレイヤー名とHP、MPを表示するメソッドが出来上がりましたね。「$tanaka->denote_hp()」や「$suzuki->denote_mp()」でメソッドが呼び出せていることから分かるように、アロー演算子はオブジェクト内(インスタンス)のプロパティ値だけでなく、メソッドも呼び出すことができます。このようにオブジェクトは連想配列と違い、メソッドというプログラム処理も併せて呼び出すことができるのです。
オブジェクトのメソッドやプロパティ値の呼び出しは「$〇〇〇(オブジェクト) -> メソッド or プロパティ」で呼び出せることを覚えておきましょう。
ここまでがクラスの(class)の基本形
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
class Player { //クラスを宣言 public $name; //「name」変数を宣言 public $hp; //「hp」変数を宣言 public $mp; //「mp」変数を宣言 public function __construct($name , $hp , $mp){ //コンストラクタ(インスタンス化した際の初期値入力設定) $this->name = $name; //作成するオブジェクトの「name」項目に変数「$a」を代入する $this->hp = $hp; //作成するオブジェクトの「hp」項目に変数「$b」を代入する $this->mp = $mp; //作成するオブジェクトの「name」項目に変数「$c」を代入する echo $this->name."さん、この世界にようこそ!<br>"; } public function denote_hp(){ //プレイヤーのHPを表示するメソッド echo $this->name."のHPは".$this->hp."です。<br>"; } public function denote_mp(){ //プレイヤーのMPを表示するメソッド echo $this->name."のMPは".$this->mp."です。<br>"; } } |
まとめ
- クラス内で使用するメソッドを「メンバメソッド」と呼ぶ。
- 「アクセス修飾子 + function + メソッド名」でメンバメソッドを作成する。
- 「$〇〇〇(オブジェクト) -> メソッド or プロパティ」でオブジェクトからメソッドやプロパティ値を呼び出せる