9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【PHP】staticとselfの違い

Posted at

PHPのstaticselfは静的メソッドで使用することができます。(インスタンス化せずに使用できる。)

staticはプログラムを実行する際のクラスを指します。
selfは記述しているクラスそのものを指します。

<?php
class HOGE {
    protected const CLASS_NAME = 'hoge';
    
    public function display()
    {
        echo self::CLASS_NAME . "\n";
        echo static::CLASS_NAME . "\n";
    }
}

class FUGA extends HOGE {
    protected const CLASS_NAME = 'fuga';
    
}

(new HOGE())->display();

(new FUGA())->display();

// (new HOGE())->display();の結果
hoge
hoge

// (new FUGA())->display();の結果
hoge
fuga

結果

  • HOGEの結果に関しては、どちらも自クラスを指すため結果がどちらもhogeになる。
  • FUGAの結果に関しては、selfは記述しているクラスを指すのでhogeを表示し、fugaは実行時のクラスを指すのでfugaが表示される。
9
6
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
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?