PHP - OOP - 3. メソッド
引き続きクラスの定義について学習していきましょう。ここではメソッドについて取り上げます。
メソッドの記述
メソッドとはクラスの中に定義する関数のことです。
以前に作成している MyClass.php
ファイルを修正して、myMethod
という名前のメソッドを定義してみましょう。
<?php
class MyClass
{
public $myProperty;
public function myMethod($x)
{
echo $this->myProperty . " " . $x;
}
}
上記のようにクラス定義の {}
の中に関数を定義するとメソッドになります。メソッドはプロパティと同様に function
キーワードの前に public
や private
といったアクセス権を合わせて記述します。
またメソッドの中では関数と同様に引数にアクセスすること以外にも、クラスに定義されているプロパティにもアクセスできます。
public function myMethod($x)
{
echo $this->myProperty . " " . $x;
}
上記の myMethod
メソッドでは $this
という変数を使って $myProperty
プロパティにアクセスしています。この $this
という変数はメソッドの中で利用できる特別な変数で、インスタンス自身を参照するために利用します。この場合の $this
は「自分自身(インスタンス自身)」というように解釈すると良いでしょう。そのため $this->myProperty
とすることでインスタンスの持つ $myProperty
にアクセスできます。
メソッドの利用方法も確認しておきましょう。 my_class_runner.php
ファイルを以下のように編集します。
<?php
require_once("MyClass.php");
$myClass = new MyClass();
$myClass->myProperty = "Hello";
$myClass->myMethod("Andy"); #=> Hello Andy
上記のようにメソッド(厳密には非 static
なメソッド)にアクセスするには予め new
演算子によってクラスからインスタンスを生成しておく必要があります。メソッドを呼び出す場合もプロパティにアクセスする場合と同様に ->
(アロー演算子)を使います。
PHPプログラムの開発(addメソッド、showメソッド)
ここでは簡単な計算機クラス( SimpleCalc
クラス)に add
メソッド、 show
メソッドをを追加します。
<?php
class SimpleCalc
{
public $number;
public function add($x)
{
$this->number = $this->number + $x;
}
public function show()
{
echo $this->number . PHP_EOL;
}
}
add
メソッドは計算機の加算機能( addメソッド
)、 show
メソッドは答えを表示する機能( showメソッド
)です。
まずは add
メソッドを見てみましょう。
public function add($x)
{
$this->number = $this->number + $x;
}
メソッドの定義方法は関数の定義方法とほとんど同じです。function
キーワードの前に public
や private
といったアクセス権を付与します。また add
メソッドでは引数 $x
を $number
プロパティに加算しています。 add
メソッドの中で $number
プロパティにアクセスするには $this->number
のように記述します。
次に show
メソッドです。
public function show()
{
echo $this->number . PHP_EOL;
}
show
メソッドでは echo
命令を使って $number
プロパティを改行コード付きで出力しています。
続いて実行用のプログラム( calc_runner.php
)を修正します。
<?php
require_once("SimpleCalc.php");
$calc = new SimpleCalc();
$calc->number = 10;
$calc->add(20);
$calc->add(30);
$calc->show();
ここでは SimpleCalc
クラスのインスタンスを生成して、インスタンスの持つ $number
プロパティに 10
を代入しています。それから $calc
変数に対して add
メソッドを2回呼び出した後、 show
メソッドで結果を出力しています。
つまり 10 + 20 + 30 = 60 という計算をしています。
それではターミナルからプログラムを実行してみましょう。
$ php calc_runner.php
60
実行結果から $number
プロパティの初期値 10
に対して add
メソッドによって +20
、 +30
と加算された結果が show
メソッドによって 60
と出力されているのがわかります。
参考:状態と振る舞い
オブジェクト指向の文脈では、プロパティのことを状態、メソッドのことを振る舞い、などと呼ぶこともあります。これから学習してくように、一般的にオブジェクトの状態への直接的なアクセスは禁止します(カプセル化)。その代わりに、オブジェクトの状態(プロパティ)は、振る舞い(メソッド)を呼び出すことで変化するように実装します。
まとめ
- メソッドとはクラスの中に定義した関数のこと
- メソッドの内部では、引数だけでなく
$this
変数によってインスタンスの持つプロパティにもアクセスできる - インスタンスのメソッドにアクセスするには
->
アロー演算子を使う