これまでのオブジェクト指向入門1~5では「インスタンス化し、アロー演算子(->)を使ってメソッド呼び出したり」「インスタンス化するタイミングでコンストラクタを使いメソッドを呼び出したり」していました。 今回はインスタンス化しなくても呼び出す方法についてまとめていきたいと思います。9月20日記事

目次





これまでの方法はインスタンスメソッドと呼ばれる

インスタンス化をしてから、プロパティやメソッドを呼び出していくという方法でした。

静的メソッド

インスタンス化しなくてもクラスそのものに属し、インスタンスメソッドとかかわりがないような独立して存在しているような状態は静的メソッドを使います。

コード

Class

<?php 
class Static_Method{
	public static function addition($num1,$num2){
		return $num1 + $num2;
	}
}

呼び出す方

<?php
require_once ('../class/Static_Method.php');

$num1 = 4;
$num2 = 5;

print $num1."+".$num2."は".Static_Method::addition($num1,$num2)."です。";

Static_Methodがクラス名、additionがメソッド名です。classの方では、public static functionとなっているのに対して、呼び出す方ではインスタンス化せずにクラス名とメソッド名を::ではさんで記述して引数に変数を渡しています。

どっち使えばいいの?

時々現場でも議論になることがあります。インスタンスを意識した場合にはインスタンスメソッドで、そうでない場合には静的メソッドです。どちらでも可能な場合がありますが、概念的にどちらを使うべきかを意識するためには、やはりインスタンス化された時にアロー演算子を使って値の処理を色々したい場合、インスタンスメソッドで 別にアロー演算子を使わなくてもよく、値の処理が絡まない場合は静的メソッドを利用します。うまく説明できているとは限りませんので、 「インスタンスメソッド 静的メソッド 使い分け」などで検索してみてください。この部分の理解はクロスチェックが必要です。

まとめ

オブジェクト指向最初の方は静的メソッドでもインスタンスメソッドでいい場合が多いですが、インスタンスするまでもなさそうな場合は静的メソッドを使うようにするといいと思います。 次はPHPでオブジェクト指向入門7~静的プロパティ~です。

以上

最終更新:2015年09月22日 11:24