EDIT: Temat nieaktualny.
Nie jestem pewien, czy dobrze zatytułowałem temat
Ale do rzeczy. Zamierzam napisać klasę bazodanową (opartą wyłącznie na zapisanym formacie JSON tablicy wielorymiarowej). Wykonywanie zapytań, sortowanie wyników itd. widzę nie poprzez pisanie poleceń SQL, tylko chainowanie metod. Na przykład:
db.table('users').select('name', 'email').where('name != frank', 'name != rob').sort_by('name')
Coś w tym stylu. I na razie to widzę tak:
db - obiekt klasy Database, nawiązujący połączenie z wybraną bazą (/plikiem)
table - metoda klasy Database wybierająca tabelę i zwracająca obiekt klasy Table
select - metoda klasy table, zwracająca obiekt klasy Result
where, sort_by - metody klasy Result do operacji na wynikach
I zastanawiam się, jak to wszystko połączyć - czy powinno to wyglądać tak, że Table i Result dziedziczą po Database? Czy może powinny to być niezależne klasy (chociaż Table powinno być zależne od Database, żeby miało dostęp do bazy danych/pliku, natomiast Result może już funkcjonować samodzielnie)? To pytanie pierwsze.
I jak zrobić, aby można było (w pewnej ograniczonej mierze) chainować metody? Muszę np. przy Database.table() zrobić
return Table.new(nazwa tabeli)
A następnie przy Table.select()
return Result.new(wynik select)
A przy Result.where mam na koniec zwrócić “self”, aby móc w razie czego operować na wynikach dalej?
? W taki sposób należy zrobić to chainowanie?