设为首页 收藏本站
查看: 807|回复: 0

[经验分享] php 5.3带来了什么(二)

[复制链接]

尚未签到

发表于 2017-3-31 10:49:18 | 显示全部楼层 |阅读模式
性能提升
  php 5.3的总体性能提升了5 - 15%

  • md5()快了10-15%
  • Better stack implementation in the engine
  • Constants移到read-only内存里
  • exception处理过程改进(简化,opcodes更少)
  • (require/include)_once改进,去掉重复open
  • Smaller binary size & startup size with gcc4
新语言特性
__DIR__
  在5.3以前,为了获得当前脚本的目录,需要一次函数调用
PLAIN TEXT
CODE:

  • echodirname(__FILE__);//<PHP5.3



  在5.3,只需要一个魔术常量__DIR__就解决了。
PLAIN TEXT
CODE:

  • echo__DIR__;//>=PHP5.3



?:操作符
  便捷的?:操作符,可以从两个值/表达式中快速取得非空值。
PLAIN TEXT
CODE:

  • $a=true?:false;//true
  • $a=false?:true;//true
  • $a=""?:1;//1
  • $a=0?:2;//2
  • $a=array()?:array(1);//array(1);
  • $a=strlen("")?:strlen("a");//1



__callStatic()
  新增了魔术方法__callStatic,功能和__call类似,但是仅对static方法有效。
PLAIN TEXT
CODE:

  • classhelper{
  • staticfunction__callStatic($name,$args){
  • echo$name.'('.implode(',',$args).')';
  • }
  • }
  • helper::test("foo","bar");//test(foo,bar)



动态调用static方法
  动态的调用静态方法?动静结合。
PLAIN TEXT
CODE:

  • classhelper{
  • staticfunctionfoo(){echo__METHOD__;}
  • }
  • $a="helper";
  • $b="foo";
  • $a::$b();//helper::foo



Late Static Binding
  不知道怎么译,可能留个原文更容易理解。静态方法的事件处理时机有变化,以前是在编译期处理,现在是执行期间处理。
  在php 5.3之前,下面的代码会输出一个A,但是这不是咱们要的,whoami方法已经在class B中重新定义,它本该输出B才符合咱们想当然的思维。
PLAIN TEXT
CODE:

  • classA{
  • publicstaticfunctionwhoami(){
  • echo__CLASS__;
  • }
  • publicstaticfunctionidentity(){
  • self::whoami();
  • }
  • }
  • classBextendsA{
  • publicstaticfunctionwhoami(){
  • echo__CLASS__;
  • }
  • }
  • B::identity();//A <-- PHP <5.3



  下面代码中使用了static::whoami()来调用静态方法。php 5.3之后,由于__CLASS__是在执行期被处理,那么这个例子中能顺利抓到class B。
PLAIN TEXT
CODE:

  • classA{
  • publicstaticfunctionwhoami(){
  • echo__CLASS__;
  • }
  • publicstaticfunctionidentity(){
  • static::whoami();
  • }
  • }
  • classBextendsA{
  • publicstaticfunctionwhoami(){
  • echo__CLASS__;
  • }
  • }
  • B::identity();//B <-->= PHP 5.3



mysqlnd
  见mysqlnd成为php 5.3中的默认mysql驱动
  但是PDO_MySQL暂时还不支持mysqlnd,目前只有mysql(i)扩展可以用到

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-358060-1-1.html 上篇帖子: php锁定文本框内容的方法 下篇帖子: 使用 PHP 的 Phing 项目部署工具
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表