PHP 5.5.0 带来的3大改进功能
PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
下面简单列举PHP 5.5.0 带给开发者的3点改进功能:
# 1 Finally关键字添加
新增的“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";
}
# 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字符。