PHP 5.5.0 带给开发者的10大改进功能

2013 年 7 月 28 日4140

PHP 5.5.0 带给开发者的10大改进功能

ZDNet开发频道 作者: 【编译】 2013年06月28日 14:02:50

关键词: 开发者 php

本文摘要

下面是最新版本的PHP的新特性的一些例子,其改进大约有10项,web开发人员可以在新的版本使用这些功能。在升级之前需要特别注意的一点是PHP 5.5.0已停止对Windows XP和2003的支持,其它向后不兼容的情况请参考这里。

# 1生成器现在可用

以下是一个简单的例子,使用生成器函数来打印出一个正整数序列如下所示。

function xrange($start, $end, $step = 1) {
 for ($i = $start; $i <= $end; $i += $step) {
 yield $i;
 }
 }
 echo 'Single digit odd numbers: ';
 foreach (xrange(1, 9, 2) as $number) {
 echo "$number ";
 }
 echo "n";

这将打印“个位数奇数:1、3、5、7、9”。

# 2Finally关键字添加

新增的“finally”关键字,改进了PHP处理异常处理的方法.

像其它高级语言一样,PHP允许您在一个try和catch块包装代码。任何异常,在try块抛出的代码将被传递给在catch块的代码来处理。

finally关键字允许您定义一个代码块,被放置在catch块之后,不管一个异常是否抛出,将总是在try和catch块之后执行。

PHP手册给出的这个例子:

function inverse($x) {
  if (!$x) {
  throw new Exception('Division by zero.');
  }
  return 1/$x;
 }
 try {
  echo inverse(5) . "n";
 } catch (Exception $e) {
  echo 'Caught exception: ', $e->getMessage(), "n";
 } finally {
  echo "First finally.n";
 }

# 3新密码散列API

$hash = password_hash($password, PASSWORD_DEFAULT);

在这里password_hash()使用两个参数,第一个密码作为一个字符串,第二个是常数设置加密算法使用。

密码将自动匹配,可以验证使用下面的代码:

password_verify($password, $hash);

当前默认加密算法是bcrypt,尽管这将改变为新的和更强的算法被添加到PHP。

建议将结果存储在一个数据库列,可以扩大超出60字符。

# 4数组和字符串常量添加间接引用

例如:

echo 'Array dereferencing:';
 echo [4,5,6][0];
 echo "n";

选择数组中第一个元素打印输出,结果是“Array dereferencing:4“。

echo 'String dereferencing:';
 echo 'HELLO'[0];
 echo "n";

选择第一个元素的字符串打印输出,结果是“

String dereferencing:H”。

# 5容易类名称解析

例如:

namespace NS {
  class ClassName {
  }
  echo ClassName::class;
 }

将打印出两类的名称和名称空间,产生“NS 类名”。

# 6Empty()函数接受表达式

例如:

function send_false() {
  return false;
 }
 if (empty(send_false())) {
  echo "False value returned.n";
 }
 if (empty(true)) {
  echo "True.n";
 }

将打印“False value returned.”。

# 7支持Zend优化器+操作码缓存添加

作为新OPcache扩展,Zend优化器+操作码缓存已经被添加到PHP。

OPcache改善性能的脚本通过消除需要PHP脚本加载并解析每次发送一个请求。为此,在共享内存的字节码预编译脚本存储。

# 8 foreach循环现在支持list() construct

使用foreach()循环和list()构造,内部嵌套数组值现在可以分配给变量。

取自内部数组变量,list()可以用来轻松赋值,就像这样:

$animals = array('dog', 'fox');
 // Listing all the variables
 list($animal1, $animal2) = $animals;
 echo "The quick $animal1 jumped over the lazy $animal2n";

产生熟悉的,“快狐狸跳过了懒惰的狗”。

从内嵌套的数组,现在list()可以使用foreach()循环分配值,例如:

$array = [
  [10, 20],
  [30, 40],
 ];
 foreach ($array as list($a, $b)) {
  echo "First: $a; Second: $bn";
 }

结果:

第一:10,第二:20

第一:30,第二:40

# 9新特性添加到GD库

函数

# 10 foreach循环现在支持标量键

当使用foreach循环遍历一个数组,元素键现在能够有一个标量值,这是一个值而不是一个整数或字符串。

本文导航

转发

文章评论

登录 (没有帐户?快速注册)

使用第三方帐号登录:

0 0