hedronium / generator-nest
支持 PHP5 的生成器委派。
v1.0
2016-12-22 11:08 UTC
This package is not auto-updated.
Last update: 2024-09-14 19:42:23 UTC
README
PHP7 本身支持生成器委派(yield from another_generator()
),但许多项目仍然是用 PHP5 编写的,或者出于兼容性原因需要支持 PHP5。
这个小巧的包包含一个生成器,允许在 PHP5 中进行生成器委派。
安装
composer require hedronium/generator-nest
使用方法
假设我们有一个这样的生成器。
function combinations($letters = []) { $chars = ['a', 'b', 'c']; foreach ($chars as $char) { $merged = array_merge($letters, [$char]); yield implode('', $merged); if (count($letters) < 2) { yield combinations($merged); } } }
如果你尝试像这样遍历对生成器的调用
foreach (combinations() as $combination) { // your code }
你将接收到3个字符串和一些作为对象的生成器。这开始成为一个问题,因为现在为了使用这个生成器,你的调用代码必须是递归的,这几乎违背了最初使用生成器的目的。
介绍 Generator nest。
use Hedronium\GeneratorNest\GeneratorNest; foreach (GeneratorNest::nested(combinations()) as $combination) { echo $combination, ' '; }
现在输出将简单变为
a aa aaa aab aac ab aba abb abc ac aca acb acc b ba baa bab bac bb bba bbb bbc bc bca bcb bcc c ca caa cab cac cb cba cbb cbc cc cca ccb ccc
成功了!
许可证
MIT.