静的メソッドと静的プロパティ

クラスとオブジェクト

オブジェクト指向プログラミングでは、インスタンスのメソッドを実行します。インスタンスは、1つのクラスでいくらでも作ることができるので、インスタンスを複数作って異なる処理を並列的に実行できるメリットがあります。
しかし、インスタンスにわざわざデータを保持する必要がない場合もあります。結果だけを取得すれば良いという場合などです。そこでその場限りで使用できるメソッドを用意することが出来ます。それを静的メソッドといい、インスタンスを作成することなく関数のように呼び出せるメソッドです。

静的プロパティは静的メソッドのプロパティ版です。既に決まっている値を静的プロパティとして設定しておき、インスタンス化しなくても呼び出して使用できます。

静的メソッドの使い方

例を基に静的メソッドの使い方を説明をします。

<?php
class Calc {
  public static function totalCalc($price){//staticをfunctionの前に付ける
    return $price * 1.1;
  }
}
?>

次に静的メソッドを利用するコードを記述します。

<?php
require_once 'Calc.php';
$price = Calc::totalCalc(5000);//クラス名::メソッド()で静的メソッドを呼び出します。
print "金額は{$price}円です。";
?>

静的プロパティも使用する

メソッドだけでなく、値が既に決まっている場合静的プロパティを使用します。
増税されれば税率が変わってしまいますが、とりあえず税率を静的プロパティとしてコードを記述してみます。

<?php
class Calc {
  public static $tax = 0.1;// 変数の前にstaticを付けて静的プロパティにする
  public static function totalCalc($price){//staticをfunctionの前に付ける
    return $price * (1 + self::$tax);
  }
?>

静的メソッドと静的プロパティを表示するコードを記述します。

<html>
<head>
<meta charset="utf-8">
<title>静的メソッドと静的プロパティ</title>
</head>
<body>
<?php
  require_once 'Calc.php';
  print "税率は".(100 * Calc::$tax)."%です。";//クラス名::変数名で静的プロパティを呼ぶ
  $price = Calc::totalCalc(5000);
  print "金額は{$price}円です。";
?>
</body>
</html>

静的プロパティを使用するときはメソッドのように::を付けますが、変数名はアロー演算子と違い「$」を付けるようにしてください。

コメント

タイトルとURLをコピーしました