self 总是指向 new 关键字所声明的类;static 在静态绑定中,可以指向层级结构中的任意类。下面举一个例子。类B继承了类A的方法。对于 get_self 方法,返回的是类A本身。而static则返回的是调用者的类,也就是说,谁调用,static就指向谁。self 则持续地指向声明的类。上面的代码,我们在类 A 中使用的是 st...
1.new static()是在PHP5.3版本中引入的新特性。 2.无论是new static()还是new self(),都是new了一个新的对象。 3.这两个方法new出来的对象有什么区别呢,说白了就是new出来的到底是同一个类实例还是不同的类实例呢? 为了探究上面的问题,我们先上一段简单的代码: classFather {publicfunctiongetNewFather()...
因为this指向classB,所以返回的是B,而returnnewclass() 等同于 return new B(),也就是类B本身。 再进一步 既然我们区分了 self 可以不经类实例化就可以使用其方法,static 必然是实例化后对象的引用,那么看下面这个例子,就会很清楚了: 代码语言:javascript 复制 classFoo{public$name=static::class;}$Foo=newFo...
现在好像有点明白new self()和new static()的区别了。 首先,他们的区别只有在继承中才能体现出来,如果没有任何继承,那么这两者是没有区别的。 然后,new self()返回的实例是万年不变的,无论谁去调用,都返回同一个类的实例,而new static()则是由调用者决定的。 上面的$sun1->getNewCaller()的调用者是$sun...
现在好像有点明白new self()和new static()的区别了。 首先,他们的区别只有在继承中才能体现出来,如果没有任何继承,那么这两者是没有区别的。 然后,new self()返回的实例是万年不变的,无论谁去调用,都返回同一个类的实例,而new static()则是由调用者决定的。
在PHP类创建过程中,self和static作为类本身的引用与类对象的引用使用上存在细微差别。尤其在类继承时,self可能带来意外结果,因此建议使用static作为类本身的引用。self总是指向new关键字声明的类,而static在静态绑定中可指向层级结构中的任意类。例如,类B继承了类A的方法,对于get_self方法,返回类A...
1.new static()是在PHP5.3版本中引入的新特性。 2.无论是new static()还是new self(),都是new了一个新的对象。 3.这两个方法new出来的对象有什么区别呢,说白了就是new出来的到底是同一个类实例还是不同的类实例呢? 为了探究上面的问题,我们先上一段简单的代码: ...
而在self 和 static 的使用上,有这细微的差别。特别是类继承过程中,self 可能带来意想不到的反应,也正如那篇文章所说,建议使用 static 作为类本身的引用。 本文再来探讨,类内的 new self 与 new static 有什么区别。 学习时间 self 总是指向 new 关键字所声明的类;static 在静态绑定中,可以指向层级结构中的...
这篇文章给大家分享的是PHP中的new self和new static的区别。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。 new static() 是在php5.3版本引入的新特性 new static 和 new self() 都是 new 一个对象 直接看代码 classFather{publicfunctiongetNewFather(){returnnewself(); ...
PHP new self()和new static()的区别 new static()是php5.3以后引入新的特性,延迟静态绑定.访问的是当前实例化的那个类,那么 static 代表的就是那个类。 new self() 是指的不是调用上下文,它指的是解析上下文. class Test { public static funtion getSelf(){...