你能给我一个例子,用 PHP 来说明闭包如何有助于创建 DSL(流利的接口)吗?
编辑:以下问题中接受的答案讲述了嵌套闭包。如果有人可以将该示例翻译成 PHP,那也会有所帮助: 体验流畅的界面?我需要你的意见!
你能给我一个例子,用 PHP 来说明闭包如何有助于创建 DSL(流利的接口)吗?
编辑:以下问题中接受的答案讲述了嵌套闭包。如果有人可以将该示例翻译成 PHP,那也会有所帮助: 体验流畅的界面?我需要你的意见!
这是我能想到的第一个例子,它不是很好,但它给了你一个想法:
$db = new Database();
$filteredList = $db->select()
->from('my_table')
->where('id', 9)
->run()
->filter(function($record){
// apply some php code to filter records
});
在那里,我将使用流利的接口使用一些 ORM 查询我的数据库,然后对我得到的记录集应用一些过滤器。想象一下,该run()
方法返回一个 RecordSet 对象,该对象的filter()
方法可能是这样的:
public function filter ($callback)
{
return array_filter($this->recordSet, $callback);
}
你明白吗?