PHP5.5的新特性
看了@轩脉刃 今天出炉的PHP 5.5 新特性。不过没有翻译全,我这里稍微补充下,整理成完整的一篇:)
原文:http://www.php.net/manual/zh/migration55.new-features.php
生成器
php5.5通过引入yield关键字来支持generators。Generators提供了一种更加简洁的生成迭代器的方式,无需通过笨重复杂的Iterator接口。
一个简单的示例:利用generators实现和range函数一样的迭代功能
function xrange($start, $limit, $step = 1) {
for ($i = $start; $i <= $limit; $i += $step) {
yield $i;
}
}
echo 'Single digit odd numbers: ';
/*
* Note that an array is never created or returned,
* which saves memory.
*/
foreach (xrange(1, 9, 2) as $number) {
echo "$number ";
}
echo "\n";
以上例程会输出:
Single digit odd numbers: 1 3 5 7 9
添加finally关键字
try-catch语句现在支持后边添加finally。无论是否会抛出异常,finally中的代码总是会被执行。
新的哈希API
添加了一个新的hash函数API,它可以更简单的生成安全的散列值,并且能够像crypt()一样用于密码验证管理。详细请参阅:password_hash()。
foreach支持list()
现在,foreach能够利用list()结构分解被嵌套的数组,并且提取其中的值。举例来说:
$array = [
[1, 2],
[3, 4],
]; foreach ($array as list($a, $b)) {
echo "A: $a; B: $b\n";
}
以上例程会输出:
A: 1; B: 2
A: 3; B: 4
更多文档可以参见foreach手册。
empty()支持表达式
现在可以将任意的表达式传入empty()中。例如:
function always_false() {
return false;
}
if (empty(always_false())) {
echo "This will be printed.\n";
}
if (empty(true)) {
echo "This will not be printed.\n";
}
以上例程会输出:
This will be printed.
array和string字面的dereferencing
可以利用下标访问array、string字面中的某个元素或者char。(ps:dereferencing不知道怎么翻译才准确...看了轩脉刃的表述:支持用下标获取,呵呵,其实就是这个意思。)
echo 'Array dereferencing: ';
echo [1, 2, 3][0];
echo "\n"; echo 'String dereferencing: ';
echo 'PHP'[0];
echo "\n";
以上例程会输出:
Array dereferencing: 1
String dereferencing: P
通过::class获取类名
可以利用ClassName::class 获取class完整的类名。例如:
namespace Name\Space;
class ClassName {} echo ClassName::class; echo "\n";
以上例程会输出:
Name\Space\ClassName
新增扩展OPcache
Zend Optimiser+的opcode cache被加入了php扩展,成为OPcache extension。OPcache可以提高php的执行性能,它能够在共享内存中存储编译好的opcode,以此节约原本为每个请求加载\解析php脚本的时间。具体安装和使用详情请参考the installation instructions。
foreach支持非标量key
foreach现在支持任何类型的key。原生的php数组仅能够用标量作为key,而现在可以通过实现Iterator::key()来返回任意类型的数据,并且foreach均能接收。
在win平台上支持Apache 2.4
windows上用于apache2.4的SAPI已被实现支持。
改进GD
GD扩展做出了很多改进,包括:
• 用于翻转图像的imageflip()函数
• 用于裁剪图像的 imagecrop() 和 imagecropauto() 函数
• 用于读写webp格式图像的imagecreatefromwebp() 和 imagewebp() 函数
PHP5.5的新特性的更多相关文章
- PHP5.4.0新特性研究
PHP5.4.0新特性研究 1.内建Web Server 这的确是个好的改进,大大的方便了开发人员.以后开发机不装nginx,httpd也行 cd $PHP_INSTALL_PATH ./bin/ph ...
- php5.5之后新特性整理
1 生成器 yield关键字yield的中文文档在这里:http://php.net/manual/zh/language.generators.overview.php查看文档,能知道yield的一 ...
- PHP5.3、PHP5.4、PHP5.5、PHP5.6的新特性
1. PHP5.3中的新特性 1.1 支持命名空间(namespace) 毫无疑问,命名空间是PHP5.3所带来的最重要的新特性. 在PHP5.3中,可以用命名空间防止代码的冲突,命名空间的分隔符为 ...
- php7和PHP5对比的新特性和性能优化
1 抽象语法树( AST) 1)在 PHP5中,从 php 脚本到 opcodes 的执行的过程是: Lexing:词法扫描分析,将源文件转换成 token 流: Parsing:语法分析,在 ...
- paip.php 5.0 5.3 5.4 5.5 -6.0的新特性总结与比较
paip.php 5.0 5.3 5.4 5.5 -6.0的新特性总结与比较 PHP5的新特性 2 · 对象的参照过渡是默认的(default) 3 · 引入访问属性的限制 3 · 引入访问方法的限 ...
- php5.3到php7.0.x新特性介绍
<?php /*php5.3*/ echo '<hr>'; const MYTT = 'aaa'; #print_r(get_defined_constants()); /* 5.4 ...
- php5.3新特性 之 mysql native driver(mysqlnd)
概述 本文主要写给sa看的.码农就不用看了. mysql native driver(mysqlnd) 自从php5.3.0开始成为官方源代码的一部分, 用来取代传统的mysql client lib ...
- PHP5.3, PHP5.4, PHP5.5新特性
PHP 5.3中的新特性 1. 支持命名空间 (Namespace) 2. 支持延迟静态绑定(Late Static Binding) 3. 支持goto语句 4. 支持闭包.Lambda/Anony ...
- php5.3 PHP5.4 PHP5.5 新特性/使用PHP5.5要注意的
1.PHP 5.3中的新特性 1.1 PHP 5.3中的新特性 1.1.1. 支持命名空间 (Namespace) 毫无疑问,命名空间是PHP5.3所带来的最重要的新特性. 在PHP5.3中,则只 ...
随机推荐
- MySQL 主重复 时时
MySQL .7开启Enhanced Multi-Threaded Slave配置: #slave slave-parallel-type=LOGICAL_CLOCK slave master_inf ...
- 8086处理器的无条件转移指令——《x86汇编语言:从实模式到保护模式》读书笔记13
本博文是对原书8.3.10的内容的总结. 一.相对短转移 指令格式是: jmp short 标号 标号也可以替换成具体的数值(标号和数值是等价的),例如 jmp short 0x2000 说明: (1 ...
- poj 2572 Hard to Believe, but True!
Hard to Believe, but True! Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3537 Accep ...
- vim命令汇总
文章首发:http://www.cnblogs.com/sprying/p/3864631.html 上一次学习vim还是快一年了,倒腾了一个月之后就没碰过.现在重新汇总下vim命令. 1.有些命令回 ...
- FZU 2138——久违的月赛之一——————【贪心】
久违的月赛之一 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Stat ...
- VMWARE 12安装Tools
准备条件 1.yum install perl 2.yum install gcc 接着就是挂载安装 新建cdrom挂载目录mkdir /mnt/cdrom挂载光驱mount -t auto /dev ...
- Firebird hash join
Firebird 现可支持哈希连接(hash join),各中大型数据库,哈希连接已成为平常,相对于循环嵌套连接(Nested Loop Join),在数据量较大的情况下,哈希连接性能较好. 由于 F ...
- XmlSerialize
以前配置文件都直接写在TXT文件,能看懂就行: 后来写了点代码,就把配置写在ini文件里: 再后来随着趋势就把配置类序列化到本地,即xml配置: 现在懒了,直接ToJson到本地,需要时FromJso ...
- ios下虚拟键盘出现"搜索"字样
最近在开发过程中,发现用户输入想要检索的内容,弹出虚拟键盘,在安卓机上虚拟键盘最右下角会有‘搜索’字样,而ios上虚拟键盘最右下角只有‘换行’字样, 这样用户体验就会大打折扣. 安卓机上虚拟键盘 io ...
- 一个最简单的LRUCache实现 (JAVA)
流程图: 1. 代码 import java.util.ArrayList; public class LRUCache { private int cacheMaxSize = 0; private ...