ホームページ > バックエンド開発 > PHPチュートリアル > PHP における新しい static と新しい self の違い

PHP における新しい static と新しい self の違い

WBOY
リリース: 2016-06-13 12:23:27
オリジナル
914 人が閲覧しました

PHP における新しい静的と新しい自己の違い

今日、上司が会社にある新しい静的と新しい自己の違いについて尋ねました。会社にある 10 個のプログラムのうち、どれも持っていませんでした。回答として以下の画面を追加します。 。 。

帰宅後、Baidu にアクセスして 2 つの違いについて学びました。

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

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

簡単に言うと、self をどのクラスに記述し、実際にこのクラスを呼び出すかというもので、static は使用されるクラスを表します。 static を親クラス

に記述し、この static をサブクラスを通じて直接的または間接的に使用するため、static と $this は非常に似ています。 static は静的メソッドとプロパティに使用できます。

例を参照してください。

<?<span style="color: #000000;">php</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> Person{    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> name()    {        </span><span style="color: #0000ff;">echo</span> "xiaosan"<span style="color: #000000;">;    }    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> callself()    {        self</span>::<span style="color: #000000;">name();    }    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> callstatic()    {        </span><span style="color: #0000ff;">static</span>::<span style="color: #000000;">name();    }}</span><span style="color: #0000ff;">class</span> Man <span style="color: #0000ff;">extends</span><span style="color: #000000;"> Person{    </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span><span style="color: #000000;"> name()    {        </span><span style="color: #0000ff;">echo</span> "gaojin"<span style="color: #000000;">;    }}Man</span>::name();  <span style="color: #008000;">//</span><span style="color: #008000;"> output: gaojin</span>Person::callself();  <span style="color: #008000;">//</span><span style="color: #008000;"> output: xiaosan</span>Person::callstatic();  <span style="color: #008000;">//</span><span style="color: #008000;"> output:gaojin</span>?>
ログイン後にコピー

編集者は学び続けます

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート