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中自我新的静态()与()有什么不同的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!