php5.3
php5.3不向下兼容的特性
- php5.3中给函数传递不存在的参数时将返回null,get_class()例外,将返回false
- clearstatcache()默认不再清楚缓存的realpath
- reapath()现在与平台无关。结果是非法的相对路径比如FILE.”/../x”将不会工作
- call_user_func()系列函数即使被调用者是一个父类也使用$this
- natsort() natcasesort() usort() uasort() uksort() ,array_flip(),array_unique()不能使用对象参数,需要转化为数组
- 函数参数为引用变量,如果按值传递,现在将抛出fatal error
- splfileinfo及其相关目录类会移除末尾的/.
- __tostring魔术方法不再接受参数
- 魔术方法get,Set,unset,isset,and__call需要是public的,不能是static的
- 现在__call魔术方法在访问私有的和被保护的方法时会被调用
- goto,namespace被保留,不能用作函数名和类名
php5.3新特性
- 添加了命名空间的支持
- 添加了后期静态绑定的支持
- 添加了跳转标签
- 添加了原生闭包的支持
- 新增callstatic和invoke两个魔术方法
- 调价了newdoc,类似单引号的特性
- 可以使用heredoc初始化静态变量和类属性
- 可使用双引号声明heredoc
- 可以在类外部使用const声明常量
- 三元运算符有了简写形式:?:
- http流包装器200-399状态码都视为成功
- 动态访问静态方法变为可能
- 异常可以被内嵌
- mail()现在支持邮件发送日志
php5.4
php5.4不向下兼容的特性
- 不再支持安全模式。
- 移除魔术引号。
- 移除全局变量regiter_globals
- 调用时的引用传递被移除
- break和continue语句不再接受可变参数
- 数组转换成字符串将产生一条e_notice级别的错误,但返回的结果仍是字符串“array”
- null,false,或一个字符串被添加成一个对象的属性时将发出一条e_warning级别的错误,而不是e_strict
- 现在参数名使用全局变量将会导致一个致命错误
- 当使用两个空数组作为参数时,array_combile()现在返回array()而不是false
php5.4新特性
- 新增traits
- 新增短数组语法
- 新增对函数返回数组成员访问解析
- 闭包支持$this
- <?=一直可用
- 实例化的时候可以访问类成员
- 新增二进制直接量
- session可以追踪文件的上传进度
- 内置wenserver
php5.5
php5.5不向下兼容的特性
- 不再支持windowsxp
- pack和unpack做了一些变更,pack现在支持Z格式编码,其表现的行为与a相同,同理unpack现在支持z format
- 移除了php logo guids
php5.5新增特性
- 新增generators,yield
- 久违的finally
- foreach 支持list()
- empty 支持任意表达式
- 支持直接调用数组方式
- 新的hashapi,password_hash()
- 更新gd
- 废弃mysql
php5.6
php5.6不向下兼容的特性
- 使用数组标识符为类定义数组类型的属性时,数组的键不会被覆盖
- json_decode不再接受true,false,null的大写
- 必须先设置 CURLOPT_SAFE_UPLOAD 为 FALSE 才能够使用 @file 语法来上传文件。 建议使用 CURLFile 类来上传文件。
php5.6新特性
- 可以使用表达式定义常量
- 使用…运算符定义变长参数函数,同时可以进行参数展开
- 使用**进行幂运算
- use 可以导入外部的函数和常量
- PHP 的 SAPI 模块中实现了一个 交互式调试器,叫做 phpdbg
- iconv 一废弃
- php://input可以重用,可以降低内存使用
- 支持大于2gb的文件上传
php7.0
php7.0不向下兼容的特性
- 变量解析严格按照从左到右的方式
- list() 不再以反向的顺序来进行赋值,空的list()赋值支持已经被移除,list()不再能解开string
- global 只接受简单变量,不再接受可变变量
- foreach不再改变内部数组指针 ,foreach 通过值遍历时,操作的值为数组的副本
- 十六进制字符串不再被认为是数字
- filter_var() 函数可以用于检查一个 string 是否含有十六进制数字,并将其转换为integer
- call_user_method() and call_user_method_array()被移除
- socket系列被移除,使用stream系列代替
- new 操作符创建的对象不能以引用方式赋值给变量
php7.0新特性
- 标量声明
- 返回值类型声明 function test():array
- null合并运算符,三元表达式合并
- 组合比较符
- define定义常量数组 define(“test”,[1,2,3])
- 增加匿名类
- closure::call,简短干练的暂时绑定一个方法到对象上闭包并调用它
- 为unserialize()提供过滤
- intdiv整除
php7.1
php7.1不向下兼容的特性
- 当传递参数过少时将抛出错误
- 对字符串使用一个空索引操作符(例如$str[] = $x)将会抛出一个致命错误, 而不是静默地将其转为一个数组。
- 析构方法在一个不完整的对象(例如在构造方法中抛出一个异常)上将不再会被调用
php7.1新特性
- 可为空(Nullable)类型,类型现在允许为空,当启用这个特性时,传入的参数或者函数返回的结果要么是给定的类型,要么是 null 。可以通过在类型前面加上一个问号来使之成为可为空的。
- Void 函数
- 类常量可见性
- 多异常捕获处理 catch (FirstException | SecondException $e)
- list()现在支持键名
- http2 server_push 在curl中可以使用
记录一下,坚持