Как замыкания помогают в создании интерфейса DSL/fluent: примеры PHP?
Можете ли вы привести пример на PHP, который показывает, как замыкания полезны при создании DSL (свободный интерфейс)?
редактировать: принятый ответ в следующем вопросе говорит о вложенных замыканиях. Если бы кто-то мог перевести этот пример на PHP, это тоже было бы полезно: опыт работы с свободно используемыми интерфейсами? Мне нужно ваше мнение!
1 ответ
Решение
Это первый пример, который я могу придумать, он не очень хорош, но дает вам представление:
$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);
}
Вы поняли идею?