静的とはインスタンス化することなくアクセスできるメソッドやプロパティで
static::静的メソッド名()
やstatic::$静的プロパティ名
としてアクセスする
このセミコロンはスコープ定義演算子という。多分秒で忘れる
example.php
class クラス名
{
アクセス修飾子 static $静的プロパティ名;
アクセス修飾子 static function 静的メソッド名()
{
}
}
$this
はインスタンスを示すものなので静的メソッドの内部で使用することはできない
example.php
<?php
class Increment
{
public static $cnt = 0;
public static function increment()
{
static::$cnt++;
}
public static function showCurrentCnt()
{
return static::$cnt;
}
}
echo Increment::$cnt;
Increment::$cnt = 100;
echo Increment::$cnt;
Increment::increment();
echo Increment::showCurrentCnt();
Increment::increment();
echo Increment::showCurrentCnt();
//クラス名に変数を使うことも可能
$class = 'Increment';
echo $class::showCurrentCnt();
実行結果は
0
100
101
102
102
静的プロパティはクラスごとに唯一の値を持つので全てのインスタンスで共有される
どこからでも値の変更が可能なためグローバル変数と変わらず、多用すると可読性が下がりバグを生む原因になる