Zadejte hledaný výraz...

Postupné dědění tříd (modelů)

Ondřej Záruba
verified
rating uzivatele
1. 9. 2011 13:51:11
Zdravím,
přemýšlím, jak nejlépe vyřešit problém s hromadným děděním tříd (modelů).
Mám třídu pro odchytávání chyb z databáze podle čísel chyb a k nim přiřazeny zprávy. Dál mám třídu která obsahuje funkce, které se volají během celého běhu aplikace a nakonec jednotlivé třídy určené konkrétním controllerům (každý controller má svojí obslužnou třídu, rsp. model).
Problém, je v tom že k prvním dvou třídám (modelům) potřebuji přistupovat kdykoliv aniž bych musel celou třídu inicializovat.
Dědit jednotlivé třídy mi přijde jako nejjednodušší řešení, ale nejsem si jist jestli je správné.
Struktura dědění vypadá takto:
Nejsem si vůbec jistý, jak už jsem řekl, že je to ideální řešení. Nevím jestli je vůbec řešení modelů pro "odchytávání" čísel chyb MySQL je nutné, ale některé chyby odchytit potřebuji a výstup upravit tak aby vyhovoval uživateli ( = vlastní text) a cpát to jako metodu do každé třídy (modelu) mi přijde zbytečné a nelogické.
Možná by se dali sjednotit třída s chybami a třída s metodami, se který mi pracují všechny modely. Ale stejně tu zůstává ta otázka vzájemného dědění...
Předem díky
1. 9. 2011 13:51:11
https://webtrh.cz/diskuse/postupne-dedeni-trid-modelu/#reply672949
Kamil Hurajt
verified
rating uzivatele
(8 hodnocení)
1. 9. 2011 15:15:51
Ja osobne vyuzivam model ktory vyzera nejako takto
1. 9. 2011 15:15:51
https://webtrh.cz/diskuse/postupne-dedeni-trid-modelu/#reply672948
Napsal Ondra Z.;696484
Mám třídu pro odchytávání chyb z databáze podle čísel chyb a k nim přiřazeny zprávy. Dál mám třídu která obsahuje funkce, které se volají během celého běhu aplikace
Co přesně ty třídy dělají?
Odchytávání chyb z databáze zní jako úkol pro třídu, přes kterou přistupujete k databázi.
1. 9. 2011 15:19:23
https://webtrh.cz/diskuse/postupne-dedeni-trid-modelu/#reply672947
Posli kus modelu a my ti ukazeme, jak to ma byt spravne (v duchu dependency injection), protoze dedeni je uplne spatne :)
1. 9. 2011 15:20:05
https://webtrh.cz/diskuse/postupne-dedeni-trid-modelu/#reply672946
Kamil Hurajt
verified
rating uzivatele
(8 hodnocení)
1. 9. 2011 15:20:53
V priklade to moze vyzerat napriklad takto:
lib_CMS.php:
class lib_CMS extends lib_Controller
{
protected function init()
{
parent::init();
$modules = // tu napr zavolas nejaky model s obsluhov pre nieco overenie alebo tak
if($modules == false)
{
echo "Nemate opravnenie pre bla bla bla"; //napriklad chybove hlasky alebo co to vykona uz je na tebe ako si spravis
exit();
}
}
}
---------- Příspěvek doplněn 01.09.2011 v 15:25 ----------
Co sa tyka toho lib_Cms je to len ukazkovo nastienene vetsinou metodu init() vyuzivam v controleri CMS innnym sposobom ako je tu uvedene. Ale myslim ze ako priklad by to mohlo dostacujuco stacit.
---------- Příspěvek doplněn 01.09.2011 v 15:27 ----------
Napsal vedouci;696538
Posli kus modelu a my ti ukazeme, jak to ma byt spravne (v duchu dependency injection), protoze dedeni je uplne spatne :)
Toto bolo smerovane na mna ? :)
1. 9. 2011 15:20:53
https://webtrh.cz/diskuse/postupne-dedeni-trid-modelu/#reply672945
Ondřej Záruba
verified
rating uzivatele
1. 9. 2011 16:09:54
Co přesně ty třídy dělají?
Odchytávání chyb z databáze zní jako úkol pro třídu, přes kterou přistupujete k databázi.
Pro komunikaci s databází používám dibi, ale jsou případy kde je třeba "surově" vložit data a počkat na odpověď MySQL.
Např. ověření existence uživatele, data se mohu pokusit ověřit při odeslání formuláře, ale výsledek není 100%. Pokud by se registroval zároveň i někdo jiný může dojít ke kolizi... Proto, jako dodatečné oveření nechám data pokusit se uložit a počkám co DB vrátí, pokud vrátí chybu #1062 nechám vypsat příslušnou chybovou hlášku, která uživatele upozorní, že uživatel již je registrován...
A potřebuji nějakou metodu, která bude ony chybové texty k jednotlivým chybám databáze přiřazovat. A dávat do každého modelu ten samý kousek kódu je blbost...
Posli kus modelu a my ti ukazeme, jak to ma byt spravne (v duchu dependency injection), protoze dedeni je uplne spatne :)
Nic napsaného nemám, zatím se tu patlám jenom s návrhem. Ale mám tu 2 controllery a oba potřebují vypsat všechna data z jednoho sloupce v databázi, zbytek metod a přístupů k databázi se liší a inicializovat si 2 a nebo více modelů pro jeden controller mi taky přijde "hloupé"
Možná bude problém právě v rozdělení modelů. Když dávám něco dohromady snažím se navrhovat tak aby contorller se staral pouze o určitou část podobných nebo společných úkonů (registrace, login) a měl přiřazený vlastní model, který by obstarával funkce potřebné k chodu daného controlleru.Je možné že jsem blbě pochopil todle rozdělení, ale udělat jeden model pro práci s db rsp ho rozdělit a pro každou tabulku udělat jiný, ale nevim ....
1. 9. 2011 16:09:54
https://webtrh.cz/diskuse/postupne-dedeni-trid-modelu/#reply672944
Pro odpověď se přihlašte.
Přihlásit