5

你能给我一个例子,用 PHP 来说明闭包如何有助于创建 DSL(流利的接口)吗?

编辑:以下问题中接受的答案讲述了嵌套闭包。如果有人可以将该示例翻译成 PHP,那也会有所帮助: 体验流畅的界面?我需要你的意见!

4

1 回答 1

2

这是我能想到的第一个例子,它不是很好,但它给了你一个想法:

$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);
}

你明白吗?

于 2012-02-21T23:43:49.080 回答