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

本文介绍了PHP从5.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 语法, 但是包含单引号.就是<<'EOF'这样的语法。
增加了两个魔术方法, __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数据的模块的内存占用带来了极大的改善。

PHP动态网页制作课程大纲(48课) 类型 课程标题 内容 课 基础篇 B/S模式程序介绍 什么是B/S类型软件 B/S类型软件的工作流程 B/S程序设计思想 2 LAMP运行环境搭建 Apache编译安装 MySQL编译安装 第三方PHP类库安装 Php编译安装 实际样例(2个) 2 PHP语言、语法介绍 HTML语言回顾、PHP语言介绍、语法规则、工作模式、基本函数介绍 实际样例(5个) 4 PHP语言元素以及结构 编程规范、PHP语言变量、数据类型、类型转换、运算优先顺序 实际样例(8个) 3 中级篇 PHP流程控制 顺序结构 分支结构 循环结构 实际样例(13个) 3 PHP字符以及字符处理 字符处理 字符处理的基本函数 正则表达式 实际样例(16个) 3 PHP函数的使用 如何定义函数 函数参数的传递方法 递归、嵌套函数的使用方法 自定义函数的方法以及使用技巧 实际样例(17个) 4 PHP数组的使用 数组的定义 一维数组、二维数组的使用方法 与数组相关的函数使用方法 实际样例(12个) 4 PHP数据的存取与传递 Session、cookie在实际项目中的用 Session、cookie的定义以及使用方法 Session、cookie的记录方式 处理Session、cookie的函数 复杂样例(13个) 5 PHP文件操作 文件操作在实际项目中的用 文件操作的各种函数 目录与文件的权限控制 文件的保存与读取 实际样例(16个) 8 数据库操作 数据库介绍 Sql server介绍和管理 MySQL基本介绍 MySQL管理 PHP操作MySQL函数介绍 实际例子(15个) 9 提高篇 PHP通过数据库操作实现分页 2 文件上传 文件上传---物理文件模式 通过保存文件模式实现文件上传 2 文件上传---数据库模式 通过数据库保存二进制方式实现文件上传 1 复杂留言板小程序 6
软件介绍 ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP开发框架,遵循Apache2开源协议发布,是为了敏捷WEB开发和简化企业级开发而诞生的。拥有众多的优秀功能和特性,经历了三年多发展的同,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和 改进,众多的典型案例确保可以稳定用于商业以及门户级的开发。 ThinkPHP借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,采用单一入口模式等,融合了Struts的 Action思想和JSP的TagLib(标签库)、RoR的ORM映射和ActiveRecord模式,封装了CURD和一些常用操作,在项目配置、类 库导入、模版引擎、查询语言、自动验证、视图模型、项目编译、缓存机制、SEO支持、分布式数据库、多数据库连接和切换、认证机制和扩展性方面均有独特的 表现。 使用ThinkPHP,你可以更方便和快捷的开发和部署用。当然不仅仅是企业级用,任何PHP开发都可以从ThinkPHP的简单 和快速的特性中受益。ThinkPHP本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB开发更简单、更快速。为此ThinkPHP会不断吸收和融入更好的技术以保证其新鲜和活力,提供WEB开发的最佳实践! ThinkPHP遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发用开源或商业产 品发布/销售。 ThinkPHP v5.0.15 更新日志: 改进View类 改进chunk方法 改进模板引擎的表达式语法 改进自关联查询多级调用问题 关联定义增加`selfRelation`方法用于设置是否自关联 改进file类型的缓存`inc`和`dec`方法不改变缓存有效期 改进软删除 支持设置`deleteTime`属性关闭 改进`union`查询 改进查询缓存 优化File缓存自动生成空目录的问题 改进日志写入并发问题 修正`MorphTo`关联 改进`join`自关联查询 改进`case`标签解析 改进Url类对`url_convert`配置的支持
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值