Poslednjih dana u ono mnogo slobodnog vremena sto ga ima gledam da na kreativan nacin ispunim prazninu... elem, resih da napravim neki MVC fw na osnovu svega onoga sto sam koristio do sada i prilagodjen ostalim tehnologijama koje koristim, uz sto manje overheada, da imam bukvalno boilerplate za aplikacije. Sredio sam neke pocetne stvari poput rutera, entry pointa, mapiranja nekih helpera, renderovanje view-ova uz sto manje PHPa a da ipak ne koristim templejting (bar ne trenutno).
Elem, stigoh do dela gde zelim da napravim ORM. Iako sam ranije u aplikacijama stalno koristio PDO kad je core php u pitanju, poslednji put kada sam pravio svoj fw (proslo 5+ god) sam koristio mysqli. Bilo kako bilo, vrlo sam upoznat sa PDO-om, ali bih zeleo da "extendujem" klasu, iliti ukratko da napravim ORM ili nesto najslicnije sto moze tome.
Osnovne funkcije su prilicno lake, modeli nemaju nikakav kod osim propertyja koji su ustvari redovi u tabeli i eventualno definicija tabele ako nije 1/1.
Problem:
Zelim da chainujem metode. Znam da svaka metoda koja se chainuje mora da vraca $this, sto negde nije problem, znam i zaobilaznice oko toga (tipa pozivanje metode preko funkcije) ali mi deluje nekako drljavo. Problem mi je da organizujem to chainovanje i iskreno voleo bih da cujem savete. Recimo (nije bukvalno ovako pisano ali za primer da jeste):
$collection = $this->db()->index(); // neka ovo bude SELECT *
$collection = $this->db()->index()->first(); // hvatanje prvog rezultata po recimo id-u
Takodje, masivni problemi mi dolaze kod joina, where-a, itd. Problematika nije mala ali ne bih da opterecujem forum vecim pitanjima, konkretno bih da se pozabavimo ovim primerom i najboljim resenjem istog.
Da li da mi sve metode mozda vracaju $this do neke finalne koja bi bila recimo get() (to je ono sto mi pada na pamet kao resenje ali bih skratio malo chainovanje) ili ima bolji nacin?