Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

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

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
0
Help us understand the problem. What are the problem?