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>?>
編集者は学び続けます