Heim > Backend-Entwicklung > PHP-Tutorial > PHP 中 new static 跟 new self 的区别

PHP 中 new static 跟 new self 的区别

WBOY
Freigeben: 2016-06-13 12:23:27
Original
892 Leute haben es durchsucht

PHP 中 new static 和 new self 的区别

        今天老大在公司 问了一下  new static  和 new self 的区别 公司十个程序 竟然没有一个回答上来 后面画面自补 。。。

 

本屌丝回家后 就百度了解了下 这二者区别 :

使用 self:: 或者 __CLASS__ 对当前类的静态引用,取决于定义当前方法所在的类:

使用 static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。

 

简单通俗的来说, self就是写在哪个类里面, 实际调用的就是这个类.所谓的后期静态绑定, static代表使用的这个类, 就是你在父类里写的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>?>
Nach dem Login kopieren

 

  小编继续学习中 

 

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage