Dělám to prostřednictvím tříd, právě proto že se chci naučit to dělat objektově, naplácat jen funkce už umím. A PHP jsem zvolil proto, že funguje na každém hostingu. Jinak se učím v Javě, kde to jinak nejde, ale web sem v ní ještě nezkoušel. Samozřejmě to není velký projekt, ale nevidím jinou cestu než prostě začít. Nějaké praktické zkušenosti jak postupovat při učení se OOP jako samouk?
Samozřejmě by se to dalo "nějak splácat tak, aby to fungovalo", protože aplikaci stejně "nikdo jiný kromě tebe nebude používat". Ale vidím, že ty se naopak snažíš postupovat pečlivě, najít co nejsprávnější řešení. A i když to třeba napoprvé nebude úplně ono, tak myslím, že jsi na dobré cestě, a že se to časem podobým zkoušením, byť i na jednoduchých aplikacích, naučíš ;-)
Jinak zkus při učení se OOP přemýšlet o objektech jako o reálných fyzických objektech, jak je vidíš ty zvenčí, a co ve skutečnosti dělají. Jakou mají zodpovědnost. Například takový vypínač světla na zdi – pro tebe je to jen zařízení, které se dá zmáčnout, čímž se rozsvítí nebo zhasne světlo. Už tě nezajímá, jestli je se světlem propojený dráty, nebo (což je zrovna případ u nás v práci) je to bezdrátový ovladač, který ovládá světla "dálkově". Stejně tak tvoje databázová třída by měla oddělovat implementaci perzistence objektů od vyšších vrstev, kterým je úplně jedno, jestli data budou uložená v databázi, v souboru, na nějaké web-service, nebo kdo ví, kde jinde. Pro ně je pouze důležité, že ta data budou uložena, nechtějí řešit nic víc...
Myslel jsem to se zprávami tak, že to nebudej jen log pro mě, ale i výstup například pří instalačním procesu. Databáze OK vs. Problém s připojením.
Mám tedy řešit jako výjimky? Zkusím si to ještě ujasnit. Nejvíc mi dělá problém, že když něco navrhnu, vždycky mi někdo řekne, že by zvolil přesně jiný návrh než mi poradil někdo před tím .
...a naopak zase databázová třída by neměla vědět, co s chybami chceš dělat, ale to už jsem psal. Výjimky určitě nejsou jediné řešení, ale mysli na to, že co použiješ v databázové třídě, to budeš muset používat ve všem, co tu databázovou třídu bude volat. Pokud tam nasadíš nějakého kočkopsa, tak ti pak bude smrdět všude, proto se snaž najít nějaké co nejvíce univerzální řešení, které nezavádí příliš mnoho závislostí na tvých vlastních třídách, jinak každé chyby v návrhu budeš litovat.
Více tříd které dědí, málo tříd s hodně metodami, statické metody... OOP někde a funkce kde to není potřeba atd.
Pokud budeš využívat rozhraní (doufám, že PHP stejně jako Java má interface), tak pak bude úplně jedno, jestli více nebo málo tříd. Vyšší vrstva bude využívat jen to rozhraní a bude od něj očekávat, že jeho implementace bude dělat to, co má.
Statické metody doporučuji (alespoň v Javě) používat co nejméně (kromě oprávněných případů), ale vysvětlení důvodu by bylo asi na delší diskuzi. V krátkosti: hůře se pak řeší zaměnitelnost jinou implementací.