学习时间 self 总是指向 new 关键字所声明的类;static 在静态绑定中,可以指向层级结构中的任意类。下面举一个例子。类B继承了类A的方法。对于 get_self 方法,返回的是类A本身。而static则返回的是调用者的类,也就是说,谁调用,static就指向谁。self 则持续地指向声明的类。上面的代码,我们在类 A 中使...
1.new static()是在PHP5.3版本中引入的新特性。 2.无论是new static()还是new self(),都是new了一个新的对象。 3.这两个方法new出来的对象有什么区别呢,说白了就是new出来的到底是同一个类实例还是不同的类实例呢? 为了探究上面的问题,我们先上一段简单的代码: classFather {publicfunctiongetNewFather()...
1.new static()是在PHP5.3版本中引入的新特性。 2.无论是new static()还是new self(),都是new了一个新的对象。 3.这两个方法new出来的对象有什么区别呢,说白了就是new出来的到底是同一个类实例还是不同的类实例呢? 为了探究上面的问题,我们先上一段简单的代码: class Father { public function getNewFa...
而static则返回的是调用者的类,也就是说,谁调用,static就指向谁。self 则持续地指向声明的类。 上面的代码,我们在类 A 中使用的是 static 静态方法,如果是动态方法,则需要使用到函数 get_class 用于获取类名。下面是一个示例: 方法create2 中使用了 return new static(),毫无疑问,调用该方法的是对象 $b,那...
当初明确了 new self() 和 new static 的区别了 他们的区别只有在继承中能力体现进去、如果没有任何继承、那么二者没有任何区别 而后new self() 返回的实列是不会变的,无论谁去调用,都返回的一个类的实列,而 new static 则是由调用者决定的。正文...
1.new static()是在PHP5.3版本中引入的新特性。 2.无论是new static()还是new self(),都是new了一个新的对象。 3.这两个方法new出来的对象有什么区别呢,说白了就是new出来的到底是同一个类实例还是不同的类实例呢? 为了探究上面的问题,我们先上一段简单的代码: ...
PHP中static::与new static()之后期静态绑定 一、parent、self、$this、__CLASS__ 1 2 3 4 5 6 7 8 9 10 11 12 13 classA {} classBextendsA{ parent::(public|protected)(静态方法|静态变量) ===> parent永远是A self::(public|protected)(静态方法|静态变量) ===> self永远是B...
new static的细说 1.new static()是在PHP5.3版本中引入的新特性。 2.无论是new static()还是new self(),都是new了一个新的对象。 3.这两个方法new出来的对象有什么区别呢,说白了就是new出来的到底是同一个类实例还是不同的类实例呢? 为了探究上面的问题,我们先上一段简单的代码:...
1.new static()是在PHP5.3版本中引入的新特性。 2.无论是new static()还是new self(),都是new了一个新的对象。 3.这两个方法new出来的对象有什么区别呢,说白了就是new出来的到底是同一个类实例还是不同的类实例呢? 为了探究上面的问题,我们先上一段简单的代码: ...
在PHP类创建过程中,self和static作为类本身的引用与类对象的引用使用上存在细微差别。尤其在类继承时,self可能带来意外结果,因此建议使用static作为类本身的引用。self总是指向new关键字声明的类,而static在静态绑定中可指向层级结构中的任意类。例如,类B继承了类A的方法,对于get_self方法,返回类A...