Diskuze: Jak řešíte spojení s DB v OOP?

Tvůrce

Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V Nette není DI, ale DI kontejner. Pravé DI je, když se na Singleton vykašleš a konstruktoru každého objektu, který databázi potřebuje, předáš $db jako parametr. V MVC stejně do DB smí jen model, takže je to jeden parametr navíc.
To by mě zajímalo, za co dostal Martin Konečný (pavelco1998) ty mínusky. Je to regulérní dotaz. Myslí si snad někdo, že by použití Nette bylo vhodnější?
Úplně nejjednodušší máš udělat si statickou třídu, co má v privátním atributu instanci PDO a na tu deleguješ statické metody. Pokud jsi objektový nácek, můžeš si udělat kontejner se službami a ten předávat v konstruktoru modelů.
Někde jsem slyšel, že statika není v tomto případě OK, proto jsem se chtěl zeptat, jak to řeší ostatní.
David Čápka Hartinger: Zatím to mám podobně, jen s tím rozdílem, že metody nemám statické a instanci získám pomocí metody getInstance().
Asi to opět vyvolá nějaký static vs non-static souboj, ale chtěl bych znát řešení od zkušenějších vývojářů.
mrkni na tohle:
http://www.itnetwork.cz/…avrhovy-vzor
Singleton tam nedávej, to je asi nejhorší varianta Statika se v praxi často pro
systémové, charakterem pomocné třídy používá. Mám info od několika
lidí, že ve firmách mají přesně takhle udělané DB wrappery, devbook
funguje také takhle.
Jejím negativem je hlavně že nemůžeš najednou pracovat s více databázemi, ale to se stejně většinou nedělá. testovací DB si uvnitř samozřejmě můžeš přepnout, to není problém. Každopádně řeči jak to je špatně jsou hlavně od teoretiků, běží takhle spousta aplikací.
Docela jsem si teď ale zvykl na předávání toho kontejneru, kde máš vytvořené instance služeb co používáš, PHP dědí konstruktory, takže to tam člověk nemusí pořád opisovat.
Zobrazeno 8 zpráv z 8.