LoginSignup
2
4

More than 3 years have passed since last update.

staticメソッドはインスタンスに依存しない機能を持つ?

Posted at

はじめに

phpを勉強する際に「そもそもstaticってなによ?」となるパターンが多いので、ここで簡単に解説する場を設けます。

そもそもstaticとは何か

「クラスに張り付いている」変数やメソッドを示す修飾子です。

クラス内の変数やメソッドは、個別のインスタンスを生成してそのインスタンス経由でアクセスすることができます。
しかしstatic修飾子のついた変数やメソッドは、インスタンスを生成しなくてもクラスから直接呼び出すことができます。

今回はstatic変数とstaticメソッドのうち、staticメソッドについて取り扱います。

どんな時に使うか?

例えば、呼び出したい機能の単なる集まりとしてクラスを利用して、個別に値をずっと持たせておく必要のないとき(newしなくてよいとき)に使います。

まずはstaticでない例から見てみましょう。


<?php
class Calculator
{

  public function add($x,$y){
      return $x+$y;
  }    
  public function diff($x, $y){
      return $x - $y;
  }

}

$calc = new Calculator();
echo $calc->add(2,3)."\n";//5
echo $calc->diff(4,1)."\n";//3
?>

Calculatorは足し算や引き算などの計算機能をまとめたクラスです。
変数は特になく計算をするメソッドだけを提供してくれます。

しかし下記のようにしても良いでしょう。

<?php
class Calculator
{

  public static function add($x,$y){
      return $x+$y;
  }    
  public static function diff($x, $y){
      return $x - $y;
  }

}

echo Calculator::add(2,3)."\n";
echo Calculator::diff(4,1)."\n";

?>

Calculator::add(2,3)と、addメソッドをクラスから呼び出しているのがわかるかと思います。

「計算機能を一箇所(クラス)にまとめて管理・使用したい」という用法であれば、インスタンス化しなくてもstaticメソッドで代替できます。

まとめ

まとめると「インスタンスに依存しない機能」はstaticメソッドにすることができます。

参考

この記事は「CodeShip」内での実際の質疑応答や指導・アドバイスの一部を基に作成しています。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4