【今日のQ&A】staticとは?【php】

こんにちは、@codeship_techです。

今回はstaticとは何なのか?二つの質問と現役エンジニア講師の回答をピックアップしました!

ご参考までに!

staticってなんですか?

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

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

今回はstatic変数とstaticメソッドのうち、staticメソッドについてお話しします。

どんな時に使うの?

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

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

php
<?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
<?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の授業について「こんな事が知りたい・紹介して」というご意見・ご提案がありましたら、CodeShip公式Twitterアカウント(【CodeShip】プログラミングスクール)までDMまたはリプライにてお寄せください。