PHP中自我新的静态()与()有什么不同

  

PHP中自我新的静态()与()有什么不同?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

问题的起因是本地搭建一个站。发现用PHP 5.2搭建不起来,站PHP代码里面有很多5.3以上的部分,要求更改在5.2下能运行。

改着改着发现了一个地方

return  new 静态(val美元);

这尼玛是神马,只见过

return  new 自我(val美元);

于是上网查了下,他们两个的区别。

自我就是这个类,是代码段里面的这个类。

静态- PHP 5.3加进来的只得是当前这个类,有点像美元这样的意思,从堆内存中提取出来,访问的是当前实例化的那个类,那么静态代表的就是那个类。

还是看看老外的专业解释吧:

自我是指同一类的方法发生在新操作。

静态PHP 5.3 & # 39; s延迟静态绑定是指任何类层次结构中调用该方法> class  A  {   public 才能static  function  get_self (), {   ,,,return  new 自我();   ,,}      public 才能static  function  get_static (), {   ,,,return  new 静态();   ,,}   }      class  B  extends  A  {}      echo  get_class (B: get_self ());//,   echo  get_class (B: get_static ());//, B   echo  get_class (:: get_static ());,//,

这一个例子基本上一看就懂了吧。

原理了解了,但是问题还没有解决,如何解决掉返回新的静态(val);这个问题呢?

其实也简单就是用get_class ($);代码如下:

class  A  {   public 才能;function  create1 (), {   ,,,class 美元;=,get_class ($);   return  new  $类();   ,,}   public 才能;function  create2 (), {   ,,,return  new 静态();   ,,}   }      class  B  extends  A  {      }      $ b =, new  B ();   var_dump (get_class ($ b→create1 ()),, get_class (b→美元create2 ()));/*   从而,result    字符串(1),“B"   字符串(1),“B"   */

看完上述内容,你们掌握PHP中自我新的静态()与()有什么不同的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

PHP中自我新的静态()与()有什么不同