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";
}
# 2生成器现在可用
生成器提供一个简单的方法来遍历数据,而无需编写一个类实现迭代器接口。
就像任何其它函数生成器是定义函数的关键字,但不像一个正常的函数,返回一个结果一次,用生成的关键字,生成器可以根据需要发回尽可能多的结果。
以下是一个简单的例子,使用生成器函数来打印出一个正整数序列如下所示。
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”。
一个生成器允许您遍历一组数据,在内存中使用foreach循环而不需要建立一个数组,不用创建数组减少了内存使用量和处理时间。
例如,根据PHP手册,使用 range()函数来生成一个序列,1和1000000之间通过调用range(0,1000000),一个foreach循环将创建一个数组的大小超过100 mb。相比之下,创建这个序列使用生成器函数将不需要消耗超过1 kb。
# 3新密码散列API
使用bcrypt,这个新密码散列API允许您使用一行代码来生成一个特色密码散列。例如:
$hash = password_hash($password, PASSWORD_DEFAULT);
在这里password_hash()使用两个参数,第一个密码作为一个字符串,第二个是常数设置加密算法使用。
密码将自动匹配,可以验证使用下面的代码:
password_verify($password, $hash);
当前默认加密算法是bcrypt,尽管这将改变为新的和更强的算法被添加到PHP。
建议将结果存储在一个数据库列,可以扩大超出60字符。