PHP örnekler: nasıl kapamaları DSL / akıcı arayüz oluşturmada yardımcı olur?

1 Cevap php

Eğer, bana bir örnek vermek PHP, bu kapaklar bir DSL (akıcı arabirim) yaratmada yardımcı olan nasıl gösterir miyim?

edit: The accepted answer in the following question tells about nested closures. If someone could translate that example to PHP that would be helpful too: http://stackoverflow.com/questions/1966515/experience-with-fluent-interfaces-i-need-your-opinion

1 Cevap

Bu büyük değil ama size bir fikir verir, ben düşünebildiğim ilk örnektir:

$db = new Database();
$filteredList = $db->select()
           ->from('my_table')
           ->where('id', 9)
           ->run()
           ->filter(function($record){
            // apply some php code to filter records
        });

Orada bazı ORM kullanarak benim veritabanını sorgulamak için akıcı arayüzleri kullanarak olurdu ve sonra ben almak kayıt için bazı filtre uygulayarak. run() yöntemi şöyle bir şey olabilir, bir filter() yöntemi vardır bir RecordSet nesnesi döndürür düşünün:

public function filter ($callback)
{
    return array_filter($this->recordSet, $callback);
}

Eğer fikir almak mı?