现在面试,对方特别喜欢让你回答PHP5.X各版本之间的特性。
有的时候一下子又愣住了回答不上了,有的新内容在工作中其实已经在用了,但是自己也从来没去理会什么新不新的。
只好现成的整理一下,免得再疏忽了。
具体代码就不帖了,网上一大堆。
PHP5.3
1. 支持命名空间 (Namespace)
概念:主要是方便多个重名的类文件的加载和调用。
在工作中可能会用到,不过暂时也没感觉有太要用的。
*命名空间的分隔符为反斜杆\
2. 支持延迟静态绑定(Late Static Binding)
概念:这是被动的改动,主要是面向对象里面。
体现在子类继承父类之后,对父类方法调用的一些问题。
增加了一个static关键字来引用当前类,即实现了延迟静态绑定。这个具体可以网上查一下。
3. 支持goto语句
概念:老概念的东西,C里面的,5.3拿了回来。
4. 支持闭包、Lambda/Anonymous函数
概念:闭包就相当于把一个方法赋值给一个变量。
5. 新增两个魔术方法__callStatic()和__invoke()
概念:
__callStatic()的意思就是调用类中不存在的静态方法时启动这个方法。*__call()是调用不存在的方法时启动。
__invoke()调用类的里面的方法时被唤醒。可以把new 出来的 对象当方法来使用。
6. 新增Nowdoc语法
概念:原来就有一个叫Heredoc,其实两个就是一个相当于双引号包括,一个相当于单引号包括。
7. 在类外也可使用const来定义常量
概念:
const CONSTANT =
'Hello World'
;
用来取代原来的define()
8. 三元运算符增加了一个快捷书写方式:
概念:
原本格式为是(expr1) ? (expr2) : (expr3)
如果expr1结果为True,则返回expr2的结果。
PHP5.3新增一种书写方式,可以省略中间部分,书写为expr1 ?: expr3
9. HTTP状态码在200-399范围内均被认为访问成功
概念:好像没什么特别用
10.支持动态调用静态方法
就是可以用变量来替代静态方法的名称
11、新魔法常量__DIR
概念:得到目录,原先有个__FILE
其它的还有性能的提升,mysql驱动mysqlnd转为核心,mysql性能提升。推出了一种phar的程序打包。
开始抛弃ereg类的方法。
PHP5.4
1、trait
PHP5.4后新增traits实现代码复用机制,Trait和类相似,但不能被实例化,无需继承,只需要在类中使用关键词use引入即可,可引入多个Traits,用','隔开。
简单地来说,traits就像是一个集合,这个集合可以给任意的类使用。
用use去加载,性质如同include一般。
2、Array dereferencing support
一种写法,可以把数组写成
$name = explode(",", "Laruence,male")[0];
寒……这个我一直在用的,没想到是5.4加的特性- -
3、DTrace support
一个性能分析工具,或许能用到吧。
4、Webserver SAPI
可以把PHP直接当成WEB服务器来用。
5、Upload progress
Session提供了上传进度支持,通过$_SESSION["upload_progress_name"]就可以获得当前文件上传的进度信息。
6、mysqlnd成为默认的数据库驱动
7、可以直接echo二进制
8、magic_quotes 被移除
9、$_SERVER["REQUEST_TIME_FLOAT"]
计算服务器的请求时间
10、函数类型提示的增强,这和JAVA的判定类似
比如函数function foo( array items){}
items变量加了array,就表示必须传入一个数组变量。
11、支持 Class::{expr}() 语法
12、Callable typehint
11和12不是特别理解。最好是要写一下代码测试一下,不过现在没环境,暂时先不写,先了解一下。
php5.5
1、opcache的引用。新的缓存技术,取代APC