「PHPでオブジェクト指向入門6~静的メソッド~」の編集履歴(バックアップ)一覧に戻る

PHPでオブジェクト指向入門6~静的メソッド~ - (2015/09/22 (火) 11:24:50) のソース

これまでのオブジェクト指向入門1~5では「インスタンス化し、アロー演算子(->)を使ってメソッド呼び出したり」「インスタンス化するタイミングでコンストラクタを使いメソッドを呼び出したり」していました。
今回はインスタンス化しなくても呼び出す方法についてまとめていきたいと思います。9月20日記事
~
~
目次
#contents
~
~
----
~
*これまでの方法はインスタンスメソッドと呼ばれる
インスタンス化をしてから、プロパティやメソッドを呼び出していくという方法でした。
~
~
*静的メソッド
インスタンス化しなくてもクラスそのものに属し、インスタンスメソッドとかかわりがないような独立して存在しているような状態は静的メソッドを使います。
~
~
*コード
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 &color(red){static} functionとなっているのに対して、呼び出す方ではインスタンス化せずにクラス名とメソッド名を::ではさんで記述して引数に変数を渡しています。
~
~
*どっち使えばいいの?
時々現場でも議論になることがあります。インスタンスを意識した場合にはインスタンスメソッドで、そうでない場合には静的メソッドです。どちらでも可能な場合がありますが、概念的にどちらを使うべきかを意識するためには、やはりインスタンス化された時にアロー演算子を使って値の処理を色々したい場合、インスタンスメソッドで
別にアロー演算子を使わなくてもよく、値の処理が絡まない場合は静的メソッドを利用します。うまく説明できているとは限りませんので、
「インスタンスメソッド 静的メソッド 使い分け」などで検索してみてください。この部分の理解はクロスチェックが必要です。
~
~
*まとめ
オブジェクト指向最初の方は静的メソッドでもインスタンスメソッドでいい場合が多いですが、インスタンスするまでもなさそうな場合は静的メソッドを使うようにするといいと思います。
次は[[PHPでオブジェクト指向入門7~静的プロパティ~]]です。
~
~
以上