我有一个函数y()
,它应该返回一些记录。
然而,这个函数在回调中获取记录,该回调被传递给另一个函数d()
以访问数据。
d()
不返回或生成任何内容。
如果将接受回调的其他函数d()
视为黑匣子,那么这种模式是否可行?
有什么替代设计吗?
function y() {
d( function ($records) { // May be called multiple times
// How to yield for "y()"?
foreach ($records as $record)
yield $record;
} );
}
yield
适用的原因 -d()
执行一些初始化操作,调用回调函数,可能会多次调用,并在之后进行一些清理工作,而且不能被展开/分解,例如因为它是一个PHP本地/扩展函数或来自第三方库。 - Arc