#静的・動的の意味
静的:変化がないことで、英語ではstatic
と表します。
動的:変化するもののことで、英語ではdynamic
と表します。
※静的メソッドはインスタンスの影響受けないので、static
でメソッドを定義した場合は$this->プロパティ名
といった書き方をするとエラーになります。
$thisはクラス(インスタンス)を指すため
#具体的な例
テストの点数を計算するTest
という名前のクラスを作成しました。
$math,$english
という変数で数学と英語の得点を使って計算するものとします。
この場合score
が静的メソッドになります。
テストの合計点は欠席日数にかかわらず変化しないためです。
一方、total_score
は欠席日数によって減点されるので動的メソッドになります。
<?php
class Test
{
// 欠席日数
public $absence;
public function __construct($absence)
{
$this->absence = $absence;
}
// 静的メソッド
public static function score($math, $english)
{
//単純な合計得点
return $math + $english;
}
// 動的メソッド
public function totalScore($math, $english)
{
//欠席日数によって得点を変化
// 欠席日数が5日以上だったら、30点減点にする
if ($this->absence >= 5) {
return ($math + $english) - 30;
}
//欠席日数が5日未満なら、減点なし
return $math + $english;
}
}
// $absence=10, $math = 80, $english = 60の場合
$my_test = new Test(10); //コンストラクタに引数を設定した場合、newするときにも必ず引数を指定する
echo $my_test->score(80, 60); //出力結果 140
echo '<br>';
echo $my_test->totalScore(80, 60); //出力結果110
#参考サイト
https://fresh-engineer.hatenablog.com/entry/2018/08/23/031829