LoginSignup
1
0

More than 3 years have passed since last update.

コードでわかる静的メソッド入門

Last updated at Posted at 2020-09-18

静的とはインスタンス化することなくアクセスできるメソッドやプロパティで
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

静的プロパティはクラスごとに唯一の値を持つので全てのインスタンスで共有される
どこからでも値の変更が可能なためグローバル変数と変わらず、多用すると可読性が下がりバグを生む原因になる

1
0
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
1
0