ホームページ >バックエンド開発 >PHPチュートリアル >PHP における新しい静的と新しい自己の違い
今日、上司が会社で新しい静的と新しい自己の違いについて質問しましたが、その中には答えがありませんでした。後で補います。 。 。
帰宅後、Baidu にアクセスして 2 つの違いについて学びました。
現在のクラスに応じて、self:: または __CLASS__ を使用します。メソッドが定義されています:
Use static:: は、現在のメソッドが定義されているクラスに解析されなくなりましたが、実際の実行時に計算されます。静的メソッドの呼び出し (ただし、それに限定されない) に使用できるため、「静的バインディング」とも呼ばれます。
簡単に一般的に言うと、self はそれが記述されているクラスを指し、実際に呼び出されるのはこのクラスです。いわゆる遅延静的バインディングであり、static は使用されるクラス、つまり作成した static を表します。親クラスでは、
次に、この static をサブクラスを通じて直接または間接的に使用します。そのため、static は $this と非常によく似ていますが、static は静的なメソッドとプロパティに使用できます。 例をご覧ください
<?<span>php
</span><span>class</span><span> Person
{
</span><span>public</span><span>static</span><span>function</span><span> name()
{
</span><span>echo</span> "xiaosan"<span>;
}
</span><span>public</span><span>static</span><span>function</span><span> callself()
{
self</span>::<span>name();
}
</span><span>public</span><span>static</span><span>function</span><span> callstatic()
{
</span><span>static</span>::<span>name();
}
}
</span><span>class</span> Man <span>extends</span><span> Person
{
</span><span>public</span><span>static</span><span>function</span><span> name()
{
</span><span>echo</span> "gaojin"<span>;
}
}
Man</span>::name(); <span>//</span><span> output: gaojin</span>Person::callself(); <span>//</span><span> output: xiaosan</span>Person::callstatic(); <span>//</span><span> output:gaojin</span>?>
上記では、PHP における new static と new self の違いを、関連する内容も含めて紹介しています。PHP チュートリアルに興味のある友人に役立つことを願っています。