PHP5.3新特性:新语言特性_PHP技巧_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

PHP5.3新特性:新语言特性

作者:黑客防线网安PHP教程基地 来源:黑客防线网安PHP教程基地 浏览次数:0

本篇关键词:特性语言mysqlnd方法
黑客防线网安网讯:  性能提升    php5.3的总体性能提升了5-15%    md5()快了10-15%    Betterstackimplementationintheengine    Constants移到read-only内存里    exception处理过程改...
  性能提升
  
  php5.3的总体性能提升了5-15%
  
  md5()快了10-15%
  
  Betterstackimplementationintheengine
  
  Constants移到read-only内存里
  
  exception处理过程改进(简化opcodes更少)
  
  (require/include)_once改进去掉重复open
  
  Smallerbinarysize&startupsizewithgcc4
  
  新语言特性
  
  __DIR__
  
  在5.3以前,为了获得当前脚本的目录,需要一次函数调用
  
  CODE:
  
  echodirname(__FILE__);//<PHP5.3
  
  在5.3,只需要一个魔术常量__DIR__就解决了
  
  CODE:
  
  echo__DIR__;//>=PHP5.3
  
  ?:操作符
  
  便捷的?:操作符,可以从两个值/表达式中快速取得非空值
  
  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方法有效。
  
  CODE:
  
  classhelper{
  
  staticfunction__callStatic($name,$args){
  
  echo$name.'('.implode(',',$args).')';
  
  }
  
  }
  
  helper::test("foo","bar");//test(foo,bar)
  
  动态调用static方法
  
  动态的调用静态方法?动静结合。
  
  CODE:
  
  classhelper{
  
  staticfunctionfoo(){echo__METHOD__;}
  
  }
  
  $a="helper";
  
  $b="foo";
  
  $a::$b();//helper::foo
  
  LateStaticBinding
  
  不知道怎么译,可能留个原文更容易理解。静态方法的事件处理时机有变化,以前是在编译期处理,现在是执行期间处理。
  
  在php5.3之前,下面的代码会输出一个A,但是这不是咱们要的,whoami方法已经在classB中重新定义,它本该输出B才符合咱们想当然的思维。
  
  CODE:
  
  classA{
  
  publicstaticfunctionwhoami(){
  
  echo__CLASS__;
  
  }
  
  publicstaticfunctionidentity(){
  
  self::whoami();
  
  }
  
  }
  
  classBextendsA{
  
  publicstaticfunctionwhoami(){
  
  echo__CLASS__;
  
  }
  
  }
  
  B::identity();//A<--PHP<5.3
  
  下面代码中使用了static::whoami()来调用静态方法。php5.3之后,由于__CLASS__是在执行期被处理,那么这个例子中能顺利抓到classB。
  
  CODE:
  
  classA{
  
  publicstaticfunctionwhoami(){
  
  echo__CLASS__;
  
  }
  
  publicstaticfunctionidentity(){
  
  static::whoami();
  
  }
  
  }
  
  classBextendsA{
  
  publicstaticfunctionwhoami(){
  
  echo__CLASS__;
  
  }
  
  }
  
  B::identity();//B<-->=PHP5.3
  
  mysqlnd
  
  mysqlnd成为php5.3中的默认mysql驱动,它有如下优点:
  
  mysqlnd更容易编译:因为它是php源码树的一个组成部分
  
  mysqlnd和php内部机制结合更紧密,是优化过的mysql驱动
  
  mysqlnd更节省内存,从测试结果来看,比传统的mysql扩展节省40%的内存
  
  mysqlnd更快
  
  mysqlnd提供了丰富的性能统计功能
  
  mysqlnd使用了PHPlicense以避免不必要的版权纠纷
  
  这个改动应同时对mysql和pdo_mysql扩展生效。
  
  mysqlnd是什么
  
  mysqlnd是mysql原装的php驱动
  
  但是PDO_MySQL暂时还不支持mysqlnd,目前只有mysql(i)扩展可以用到
  
  
    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-17540-1.html
网站维护教程更新时间:2012-09-21 05:20:50  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer