PHP5.5中新增的"参数跳跃"和"生成器"功能介绍

生成器

目前,自定义迭代器很少使用,因为它们的实现,需要大量的样板代码。生成器解决这个问题,并提供了一种简单的样板代码来创建迭代器。

例如,你可以定义一个范围函数作为迭代器:

<?php

function *xrange($start, $end, $step = 1) {

for ($i = $start; $i < $end; $i += $step) {

yield $i;

}

}

foreach (xrange(10, 20) as $i) {

// ...

}

上述xrange函数具有与内建函数相同的行为,但有一点区别:不是返回一个PHP数组的所有值,而是返回一个迭代器动态生成的值。

参数跳跃

如果你有一个函数接受多个可选的参数,目前没有办法只改变最后一个参数,而让其他所有参数为默认值。

RFC 上的例子,如果你有一个函数如下:

function create_query($where, $order_by, $join_type='', $execute = false, $report_errors = true) { ... }

那么有没有办法设置$report_errors=false,而其他两个为默认值。为了解决这个跳跃参数的问题而提出:

create_query("deleted=0", "name", default, default, false);

我个人不是特别喜欢这个提议。在我的眼睛里,代码需要这个功能,只是设计不当。函数不应该有12个可选参数。