Zkoušel jste vaše teorie použít v praxi? Nemůžete přistupovat k atributům přímo a gettery smí být pouze privátní. Mohl byste uvést příklad nějaké open source knihovny, která toto dodržuje?
V praxi to běžně používám a funguje to. Nemohu za to, že tvůrci běžných knihoven nechápou princip zapouzdření. Pokud chci použít cizí knihovnu, napíši si na ni adaptér, abych ji zapouzdřil a mohl s ní pracovat ve stylu OOP.
Tiez by som uvital priklad. Celkom si dokazem predstavit, ze by som fungoval bez getterov, ale bez setterov nie. Pokial chcem uzivatelovi zmenit meno a datum narodenia, tak si predsa nacitam z databazy tohoto uzivatela, prostrednictvom metod setName a setBirthdate mu nastavim nove hodnoty a nasledne pomocou metody save zapisem tieto zmeny do databazy.
Teda este by som to mohol riesit takymto sposobom:
$user->update(['name' => $name, 'birthday' => $birthday]);
Ale nieje to jedno? V principe musim vzdy objektu poslat data z vonku a je vcelku jedno ci to spravim prostrednictvom settrov, alebo to tomu objektu predam v kope ako argument metody (ine sposoby mi nenapadaju).
Tento druhy sposob mi mozno zabezpeci to, ze jediny sposob ako zmenit vnutorny stav objektu je prostrednictvom metody update, a tym padom mam istotu, ze aktualne data, kt. mam ulozene v instancii objektu su zhodne s tymi, ktore su v databaze, tzn. nemoze sa mi stat, ze prostrednictom setteru zmenim meno, update sa mi nepodari (pripadne by som vobec nevykonal update) a teda mohlo by sa mi stat, ze by som na vystup poslal data, ktore nezodpovedaju tomu, co mam v databaze. O to ide?