怎么在PHP中实现后期静态绑定

  介绍

怎么在PHP中实现后期静态绑定?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<强>::的限制

使用<代码>::> _class_>

例子:

class  A  {   public 才能;static  function 谁(),{   ,,,echo  __CLASS__进行;   ,,}   public 才能;static  function 测试(),{   ,,,self::谁();   ,,}   }   class  B  extends  A  {   public 才能;static  function 谁(),{   ,,,echo  __CLASS__进行;   ,,}   }   B::测试();,//

打印结果:

<强>后期静态绑定的用法

后期静态绑定试图通过引入一个关键字表示运行时最初调用的类来绕过限制。简单的说,这个关键字能够让你在上述中调用测试()时引用的类是B而不是A .最终决定不引用新的关键字,而是使用已经预留静态关键字

例子:

& lt; php ?   class  A  {   public 才能;static  function 谁(),{   ,,,echo  __CLASS__进行;   ,,}   public 才能;static  function 测试(),{   ,,,静态::谁();,//,后期静态绑定从这里开始   ,,}   }   class  B  extends  A  {   public 才能;static  function 谁(),{   ,,,echo  __CLASS__进行;   ,,}   }   B::测试();   ?在

打印结果是:

B

后期静态绑定的处理方式解决了以往完全没有解决的静态调用,另外一方面,如果静态调用使用父::或者自我::将转发调用信息

& lt; php ?   class  A  {   public 才能static  function  foo (), {   ,,,静态::谁();   ,,}   public 才能;static  function 谁(),{   ,,,echo  __CLASS__进行干净\ n";   ,,}   }   class  B  extends  A  {   public 才能;static  function 测试(),{   ,,,::foo ();   ,,,的父母:foo ();   ,,,自我:foo ();   ,,}   public 才能;static  function 谁(),{   ,,,echo  __CLASS__进行干净\ n";   ,,}   }   class  C  extends  B  {   public 才能;static  function 谁(),{   ,,,echo  __CLASS__进行干净\ n";   ,,}   }   C::测试();   ?在

打印结果:


C C

例子:

& lt; php ?   class  a  {   ,static  public  function 测试(),{   print 才能get_called_class ();   ,}   }   class  b  extends  a  {   }   答::测试();   b::测试();   吗?在

打印结果:


b

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

怎么在PHP中实现后期静态绑定