ホームページ  >  記事  >  バックエンド開発  >  PHPにおけるstaticとselfの違いを詳しく解説

PHPにおけるstaticとselfの違いを詳しく解説

黄舟
黄舟オリジナル
2017-08-10 11:19:561504ブラウズ

面接中に聞かれたのですが、答えざるを得ませんでしたので、ここにまとめておきたいと思います。

現在のメソッドが定義されているクラスに応じて、self:: または現在のクラスへの静的参照を使用します。__CLASS__

static:: の使用は、現在のメソッドが定義されているクラスに解析されなくなります。ただし、実際の実行時に計算されます。静的メソッドの呼び出し (ただし、それに限定されない) に使用できるため、「静的バインディング」とも呼ばれます。

静的バインディングは、継承スコープ内で静的に呼び出されるクラスを参照するために追加された関数です

簡単に言うと、これが実際に記述されているクラスです。 Class.

static は使用するクラスを表し、これは親クラスに記述した静的であり、サブクラスによってオーバーライドされ、サブクラスのメソッドまたは属性が使用されます

<?phpclass Person{
    public static function name()
    {
        echo "111";        echo "<br />";
    }    public static function callself()
    {
        self::name();
    }    public static function callstatic()
    {
        static::name();
    }
}class Man extends Person{
    public static function name()
    {
        echo "222";        echo "<br />";
    }
}

Man::callself();  // output: 111Man::callstatic();  // output: 222?>

以上がPHPにおけるstaticとselfの違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。