Help us understand the problem. What is going on with this article?

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

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

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

satorunooshie
経済学を学んでいる大学三年生です PHP, Kotlinを中心に学習しています 役に立てそうな英語の記事や詰まったところを共有していきます
https://satorunooshie.net
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