php5.0到5.6的新特性,开发时应注意版本的兼容性

这篇具有很好参考价值的文章主要介绍了php5.0到5.6的新特性,开发时应注意版本的兼容性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

php5.0

使用了Zend 2 引擎。

增加完善的面向对象模型

增加了新关键字,包括this,try,catch,public,private,protected等

改变strrpos() 和 strripos()使用整个字符串作为 needle。

改变array_merge() 只接受数组

改变非法使用字符串偏移量会导致 E_ERROR 而不是 E_WARNING

改变get_class(),get_parent_class()和get_class_methods() 返回的类/方法名和定义时的名字一致(区分大小写)

改变ip2long() 在传递入一个非法 IP 作为参数时返回 FALSE,不再是 -1。

改变函数定义在包含文件中,则这些函数可以在主文件中使用而与是否在 return 指令之前还是之后无关

改变include_once 和 require_once 在 Windows 下路径规格化,因此包含 A.php 和 a.php 只会把文件包含一次。

php 5.1

重写了数据处理部分的代码

PDO扩展默认启动

性能优化

超过30个新函数

超过400个bug修复

php5.2

CLI SAPI不再从php.ini和php-cli.ini中获取当前目录信息。这是从安全角度考虑的。

增加json支持

对0取模的时候会提示Warning信息。

对象可以通过__toString()函数被当做字符串调用。

禁止设置抽象类的静态方法

增加RFC(data:stream)的支持。

php5.3

不再支持ISAPI

增加了命名空间的支持.

增加了延迟静态绑定支持.

增加了闭包及匿名函数支持。

增加了循环引用的垃圾回收器并且默认是开启的.

增加允许动态访问静态方法。

增加了 Nowdoc 语法支持, 类似于 Heredoc 语法, 但是包含单引号.就是

增加了两个魔术方法, __callStatic 和 __invoke.

增加魔法常量 __DIR__ 来解决路径问题

改变__toString 魔术方法不再接受参数

改变魔术方法 get, set, isset, unset, and __call 应该总是公共的(public)且不能是静态的(static). 方法签名是必须的.

改变__call 魔术方法在访问私有的(private)和被保护的(protected)方法时被调用.

改变realpath() 现在是完全与平台无关的. 结果是非法的相对路径比如 FILE . "/../x" 将不会工作.

call_user_func() 系列函数即使被调用者是一个父类也使用 $this.

改变数组函数 natsort(), natcasesort(), usort(), uasort(), uksort(), array_flip(), 和 array_unique() 将不再接受对象作为参数

改变include(require)_once 解决重复打开的问题,整体性能提高了 5%-15%

改变md5() 大概提高了 10%-15% 的性能,更好的内存处理机制,提高软件性能的访问。

改变函数内 include 或者 require 一个文件时,文件内 将不能使用 func_get_arg(), func_get_args() 和 func_num_args() 函数

改变HTTP 流包裹器将从 200 到 399 全部的状态码都视为成功

改变异常可以被内嵌

改变三元操作符简写echo $a ? $a : "No Value"==$a ?: "No Value";

改变使用双引号声明 Heredoc, 补充了 Nowdoc 语法.

改变可在类外部使用 const 关键词声明 常量.

php5.4

不再支持 安全模式 。任何依赖安全模式的应用在安全方面都需要进行调整。

增加支持 traits 。

增加短数组语法,比如 a=[1,2,3,4];或a = ['one' => 1, 'two' => 2, 'three' => 3, 'four' => 4]; 。

增加支持对函数返回数组的成员访问解析,例如 foo()[0] 。

增加 闭包 支持 $this 。

增加不管是否设置 short_open_tag php.ini 选项,

增加在实例化时访问类成员,例如: (new Foo)->bar() 。

增加支持 Class::{expr}() 语法。

增加二进制直接量,例如:0b001001101

增加内置用于开发的 CLI 模式的 web server 。

增加SESSION 扩展现在能追踪文件的 上传进度

改变移除魔术引号 。为避免出现安全问题,依赖此特性的应用可能需要升级。 

改变get_magic_quotes_gpc() 和 get_magic_quotes_runtime() 现在总是返回 FALSE 。 

改变php.ini 指令register_globals 和 register_long_arrays 被移除。

改变调用时的引用传递 被移除。就是不能有f(&$a)这样的形式

改变break 和 continue 语句不再接受可变参数

改变在日期与时间扩展 中,不再支持时区使用 TZ(TimeZone)环境变量设置,必须使用 date.timezone php.ini 配置选项或 date_default_timezone_set()

改变数组转换成字符串将产生一条 E_NOTICE 级别的错误

改变NULL 、FALSE 、或 一个空字符串被添加成一个对象的属性时将发出一条 E_WARNING 级别的错误

改变参数名使用全局变量将会导致一个致命错误

改变Salsa10 和 Salsa20 哈希算法 被移除

改变当使用两个空数组作为参数时,array_combine() 现在返回 array() 而不是 FALSE

改变htmlentities() 将像 htmlspecialchars() 一样处理亚洲字符集

改变不要再使用 eregi() ,此特性在最新版本中被移除

改变非数字的字符串偏移量,比如 a[′foo′]此处a 是一个字符串,现在使用 isset() 时返回 false,使用 empty() 时返回 true,

改变解析错误信息和不兼容参数的警告

php5.5

已放弃对 Windows XP 和 2003 的支持。需要 Windows Vista 或更新的系统。

增加 Generators,包括yield关键字

增加 finally 关键字

增加了代码的opcache缓存

改变pack() 和 unpack()函数

改变移除 PHP logo GUIDs

改变foreach 现在支持 list()

改变empty() 支持传入一个任意表达式,而不仅是一个变量

改变非变量array和string也能支持下标获取了

改变类名通过::class可以获取

php5.6

增加可变参数函数的支持,不再依赖func_get_args()函数,现在可以通过新增的操作符(...)可以把数组或者可遍历对象解包到参数列表

增加一个交互式调试器phpdbg

改变const 允许使用包含数字、字符串字面值和常量的标量表达式

改变GMP 对象支持操作符重载和转换为标量

改变采用CryptoPro S-box tables实现了 gost-crypto 哈希算法

改变OpenSSL扩展新增证书指纹的提取和验证功能,

改变use 操作符开始支持函数和常量的导入 use function 和 use const

改变php://input 开始支持多次打开和读取,这给处理POST数据的模块的内存占用带来了极大的改善。文章来源地址https://www.toymoban.com/news/detail-824501.html

到了这里,关于php5.0到5.6的新特性,开发时应注意版本的兼容性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 17 版本的新特性

    Java 17 是2021年9月发布的最新版本,其中包含了很多新特性和改进,这些新特性和改进将进一步提高 Java 语言的性能和可用性。在这篇博客中,我们将介绍 Java 17 中的一些重要新特性。 摘要: Java 17是Java编程语言的一个新版本,它引入了一些新的特性和改进,使得Java编程更加

    2024年02月09日
    浏览(39)
  • AutoCAD二次开发(ObjectARX/.NET) 多版本开发包兼容性

    文章来源:General Development Compatibility 一般开发兼容性 (ObjectARX/.NET) - 中文CAD开发文档,CAD二次开发问题交流,优秀插件分享  产品发布 二进制兼容版本 支持的开发环境 AutoCAD 2021 AutoCAD 2021 Windows Visual Studio 2019 Mac OS(10.13 或更高版本) Xcode : 10.2.1 Mono : 5.20.1.19 AutoCAD 202

    2024年01月20日
    浏览(35)
  • php5构造无字母数字的webshell实现任意命令执行

    目录 引言 如果是在php7 如果是在php5 现在我们来上传文件 最后的结果: 看本篇前可以先看这一篇:利用异或、取反、自增bypass_webshell_waf-CSDN博客 上一篇介绍了如何构造出一个无字母数字的webshell,但是如果后端的代码变成了这样: 这里过滤了大小写字母、数字、_、$,因此

    2024年02月04日
    浏览(32)
  • 文件上传upload-labs第三关,Apache无法解析php3、php5等问题

    修改文件后缀名为php5,上传后。无法解析php5 参考网上众多教程,修改httpd.conf配置文件: 添加.php3 .php5 phtml,大部分都可以解决 PHPStudy中AddType application/x-httpd-php等Apache命令之所以在Apache的设置文件中设置后未实现目标效果是由于PHP的版本不符导致的 修改版本,切换到如图所

    2024年02月12日
    浏览(40)
  • 从php5.6到golang1.19-文库App性能跃迁之路

    作者 | 百度文库App 导读 本文深入浅出地分享了百度文库App服务端技术栈从PHP迁移至Go的实战经验,包含了技术选型、基础建设、流量迁移的具体方案,以及核心项目案例的重构实践。 全文6209字,预计阅读时间16分钟。 长期以来,百度文库App服务端采用 PHP 作为主要开发语言

    2024年02月12日
    浏览(28)
  • 在Debian 12 上安装 PHP 5.6, 7.4

    环境:Debian 12 Debian 12 默认的PHP版本为 8.2 如果直接安装php7.4就出现下面的报错: 安装5.6和7.4正确的姿势为: 多版本切换可以用下面的命令: sudo update-alternatives --config php 也可以直接在Web Server里勾选: 2023年7月实测可行

    2024年02月16日
    浏览(27)
  • 功能测试之兼容性测试点和注意项

    一: 兼容性测试 的概念: 就是验证开发出来的程序在特定的运行环境中与特定的软件、硬件或数据相组合是否能正常运行、有无异常的测试过程。 二:兼容性测试的分类: (1) 浏览器 兼容性测试 指的是在浏览器上检查 web 页面样式和元素的展示效果,以及交互是否正常

    2024年02月14日
    浏览(29)
  • Easysearch 跨版本兼容性测试,还原 Elasticsearch 各版本快照数据

    本文主要测试验证 Elasticsearch 各版本快照在 Easysearch 中进行数据恢复。 ignore_unavailable:如果 indices 列表中的索引不存在,则是否忽略该索引而不是使快照失败。默认值为 false 。 include_global_state:是否在快照中包含集群状态(包括索引模版、生命周期配置、持久化配置等)。

    2024年02月09日
    浏览(32)
  • SpringBoot和JDK版本兼容性

    SpringBoot和JDK版本兼容问题,就是SpringBoot的每个版本支持哪些JDK版本。 在spring官网、spring-boot项目的github地址都没有找到一个统一的总结,类似表格这样,所以到spring-boot的各个版本的文档中找出来。如果有官方的总结我没找到的,可以跟我说下。 下面的表格列出了SpringBoot版

    2024年02月01日
    浏览(38)
  • JAVA 8 的新特性

    简介: 前段时间面了完美世界,被问到Java8的新特性,在此特地记录一下,虽然现在Java的版本可能已经很高了,但是Java8的新特性依然值得学习一下! 1. Lambda 表达式 2. Stream流 3. Optional 4. Java 8 默认方法 5. 函数式接口 6. 方法引用 lambda表达式的一种简化写法 7. Base64编码 8. 链式

    2024年02月10日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包