快速业务通道

php 5.3新特性介绍

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-03-15

 

namespace和autoload的友情

  • autoload会根据namespace名称以及class名称来解析类文件位置
  • 仅当namespace和全局范围都没找到class定义的情况下,autoload才会被触发
  • 在namespace中定义的__autoload不会被自动调用
PLAIN TEXT
CODE:
  1. function __autoload($var) { var_dump($var)} // LIB::foo
  2. require "./ns.php"/*
  3.         <?php
  4.                 namespace LIB;
  5.                 new foo();
  6. */

 

namespace一些辅料

PLAIN TEXT
CODE:
  1. namespace really::long::pointlessly::verbose::ns;  
  2. __NAMESPACE__; // 新增的魔法常量,表示当前namespace名称
  3. class a{}   
  4. get_class(new a())// really::long::pointlessly::verbose::ns::a
  5. use really::long::pointlessly::verbose::ns::a AS b; // 从名称空间中引用一个类

 

注:这里的内容节选自pdf Introduction to PHP 5.3 Slides,后文不再复述。

性能提升

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:
  1. echo dirname(__FILE__)// < PHP 5.3

 

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

PLAIN TEXT
CODE:
  1. echo __DIR__; // >= PHP 5.3

 

?:操作符

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

PLAIN TEXT
CODE:
  1. $a = true ?: false; // true
  2. $a = false ?: true; // true
  3. $a = "" ?: 1// 1
  4. $a = 0 ?: 2// 2
  5. $a = array() ?: array(1)// array(1);
  6. $a = strlen("") ?: strlen("a")// 1

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号