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数据的模块的内存占用带来了极大的改善。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/682804.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型Layer normalization知识

Layer Norm 的计算公式 Layer Norm(层归一化)是一种用于神经网络中的归一化技术,用于提高模型的训练效果和泛化能力。 RMS Norm 的计算公式 RMS Norm 的作用是通过计算输入 X 的均方根,将每个样本的特征进行归一化,使…

AD域国产替代方案,助力某金融企业麒麟信创电脑实现“真替真用”

近期收到不少企业客户反馈采购的信创PC电脑用不起来,影响信创改造的进度。例如,某金融企业积极响应国产化信创替代战略,购置了一批麒麟操作系统电脑。分发使用中发现了如下问题: • 当前麒麟操作系统电脑无法做到统一身份认证&…

优秀网络安全运营专家的成长之路

文章目录 前言一、基础阶段:掌握必要的网络安全运营技能1、了解网络系统2、网络安全监控3、网络流量分析4、日志分析和搜索能力5、端点安全保护6、加入活跃的网络和安全社区7、紧跟最新的行业咨询二、中级阶段:更深入地了解网络威胁1、情报分析能力2、云计算安全3、主动威胁搜…

【Java】零基础蓝桥杯算法学习——线性动态规划(一维dp)

线性dp——一维动态规划 1、考虑最后一步可以由哪些状态得到,推出转移方程 2、考虑当前状态与哪些参数有关系,定义几维数组来表示当前状态 3、计算时间复杂度,判断是否需要进行优化。 一维动态规划例题:最大上升子序列问题 Java参…

面试技术栈 —— 2024网易雷火暑期实习真题

面试技术栈 —— 2024网易雷火暑期实习真题 1. 最长递增子序列。2. 集中限流和单机限流你觉得哪个好?3. redis部署服务器配置,为什么不用哨兵?4. 讲讲分布式session的原理。5. 数据库:表数据量大了,如何分表&#xff1…

Python 读取pdf文件

Python 实现读取pdf文件简单示例。 安装命令 需要安装操作pdf的三方类库,命令如下: pip install pdfminer3K 安装过程如下: 引入类库 需要引入很多的类库。 示例如下: import sys import importlib importlib.reload(sys)fr…

cordic算法圆周系统计算sin、cos、平方和开根、atan、坐标系变换

cordic算法圆周系统计算sin、cos、平方和开根、atan 一、cordic圆周系统旋转模式和向量模式1.1 旋转模式1.2 向量模式 二、一些需要考虑的事项2.1角度范围2.2输入正负2.3关于迭代精度2.4坐标系旋转 参考文献: 若想计算 s i n sin sin、 c o s cos cos、 x 2 y 2 \s…

SpringCloud入门概述

1. 介绍 Spring Cloud 1.1 什么是 Spring Cloud Spring Cloud 是一个基于 Spring Boot 的微服务架构开发工具集,它为开发者提供了一系列开箱即用的工具和库,用于构建分布式系统中的微服务架构。Spring Cloud 提供了诸如服务发现、配置中心、负载均衡、…

【MySQL】索引事务

MySQL索引事务 1. 索引1.1 概念1.2 作用1.3 使用场景1.4 使用1.5 案例 2. 事务2.2 事物的概念2.3 使用 3. 内容重点总结 1. 索引 1.1 概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引, 并指定索引的类…

【leetcode热题100】不同的二叉搜索树

给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n 3 输出:5示例 2: 输入:n 1 输出:1 …

算法学习——LeetCode力扣回溯篇2

算法学习——LeetCode力扣回溯篇2 40. 组合总和 II 40. 组合总和 II - 力扣(LeetCode) 描述 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字…

机器视觉与智能制造:开启工业自动化的新篇章

机器视觉与智能制造的结合,无疑为工业自动化开启了一个全新的篇章。这两者的结合,不仅提高了生产效率,降低了成本,还提升了产品质量,增强了企业的市场竞争力。 一、机器视觉的核心技术 机器视觉是一种模拟人类视觉的…

Qt 的准备知识

文章目录 1. Qt 背景介绍2. 搭建 Qt 开发环境3. 认识 Qt Creator3.1 main.cpp3.2 widget.h3.3 widget.cpp3.4 Forms3.5 .pro文件 1. Qt 背景介绍 Qt 是⼀个 跨平台的 C 图形用户界面应用程序框架 。它为应用程序开发者提供了建立艺术级图形界⾯所需的所有功能。它是完全⾯向对…

电脑设置静态地址有啥用

随着信息技术的迅猛发展,计算机网络已成为现代社会不可或缺的基础设施。在网络世界中,每一台计算机都需要一个独特的标识来与其他计算机进行通信,这个标识就是IP地址。其中,静态IP地址作为一种固定的网络配置方式,在特…

C语言-----习题

1.通过这个例题,我们可以知道*p.a是无法打印99的,因为.的优先级比解引用*高; ​ struct S {int a;int b; }; int main() {struct S a, * p &a;//可以分为两部分理解//struct S a;//struct S *p &a;a.a 99;printf("%d\n"…

Docker 在window 2024版笔记 下载 安装 操作 配置

---Docker 前言--- Docker windows版官方版是一款专业开源的应用容器引擎,可以加快用户构建、共享和运行现代应用程序的速度,支持运行Linux和Windows Docker容器。 Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互…

2024年华为OD机试真题-密码输入检测-Java-OD统一考试(C卷)

题目描述: 给定用户密码输入流input,输入流中字符<表示退格,可以清除前一个输入的字符,请你编写程序,输出最终得到的密码字符,并判断密码是否满足如下的密码安全要求。 密码安全要求如下: 1.密码长度>=8; 2.密码至少需要包含1个大写字母; 3.密码至少需要包含1个小…

关于Windows Media Player的一些知识,看这篇文章就差不多了

你知道如何在电脑上打开Windows Media Player吗?如果它不是你电脑上默认的媒体播放器,你知道如何将其设为默认吗?此外,如果你找不到它,你知道怎么把它找回来吗?这篇文章将向你展示你想要了解的所有信息。 在这篇文章中,我们将向你展示以下信息: 如何打开Windows Medi…

从傅立叶变换到奥运五环

傅立叶变换的本质 离散傅立叶变换的本质就是用一系列的正弦&#xff08;或者余弦&#xff09;函数的和来拟合一个周期函数f(t)。公式如下&#xff1a; (1) 其中T是f(t)的周期&#xff0c;即f(tT)f(t)对任意t成立。和的周期是。换句话说&#xff0c;后两者的频率是f(t)的频率的…

推荐10个最受欢迎的 Vue.js UI 库

在2024年,随着Vue.js的不断普及和发展,这个轻量级、易于学习的JavaScript框架在前端开发者中的受欢迎程度日益上升。Vue.js之所以受到青睐,很大一部分原因是其庞大的生态系统,特别是众多的UI库,这些库提供了预先构建的组件和工具,帮助开发者快速高效地构建出既美观又响应…