Autor | Zpráva | ||
---|---|---|---|
radecek Profil |
#1 · Zasláno: 5. 3. 2009, 00:39:23
Ahoj,
mam na webu dve tridy - mysql a checkForm. mysql se stara o pripojeni na mysql server, vkladani dotazu, vypis, update, ... a checkForm overuje jeslti je formular spravne odeslan - shoda hesel, vyplnene povinne polozky, atd.. A potrebuju k nim vytvorit spolecnou tridu system, ktera vytvari seznam oznanemi - spatne vyplnene heslo, login uz existuje atd. |
||
Jan Tvrdík Profil |
#2 · Zasláno: 5. 3. 2009, 07:31:37
radecek:
Nechápu, co si představuješ, že pro tebe uděláme. |
||
Mastodont Profil |
#3 · Zasláno: 5. 3. 2009, 08:33:37
radecek
Dle zadání ty dvě třídy nemají nic společného, takže je blbost vytvářet k nim předka. |
||
radecek Profil |
#4 · Zasláno: 5. 3. 2009, 08:39:27 · Upravil/a: radecek
Prave bych poreboval aby mely spolecny system. Ale kdyz vytvorim:
mysql extends system check_form extends system Tak budou existovat dve promenne oznameni (mysql->oznameni, check_form->oznameni) a ja bych potreboval aby se to vsechno ukladalo do jednoho mistav pameti. Abych pak mohl tyto chybi vypsat v jednom cyklu. |
||
Aesir Profil |
#5 · Zasláno: 5. 3. 2009, 08:58:48
radecek:
„A potrebuju k nim vytvorit spolecnou tridu system, ktera vytvari seznam oznanemi - spatne vyplnene heslo, login uz existuje atd.“ Od toho jsou vyjímky, které si z třídy vyhodíte a následně si je zpracujete dle svého. Pokud potřebujete uchovávat globálně nějaké údaje (vaše oznámení napříkald), tak v rámci jednoho requestu můžete využít vzor registry, pokud to přes více requestů, stejně budete muset šáhnout po session nebo něčem podobném. |
||
radecek Profil |
#6 · Zasláno: 5. 3. 2009, 09:08:25
Ale vyjimky by se nemeli moc pouzivat ne?
|
||
Mike8748 Profil |
#7 · Zasláno: 5. 3. 2009, 09:14:46
radecek
a to jako proc ne? |
||
radecek Profil |
#8 · Zasláno: 5. 3. 2009, 09:15:25
Zpomaluji :)
|
||
Aesir Profil |
#9 · Zasláno: 5. 3. 2009, 09:20:44
radecek:
Zpomalují co? A z čeho vycházíte? Máte k tomu odkaz na nějaké zdroje? |
||
radecek Profil |
#10 · Zasláno: 5. 3. 2009, 09:22:23 · Upravil/a: radecek
Nevim ucili jsme se to ve skole ale v C. Vyjimky se nemaji pouzivat moc v programu ze ho zpomaluji ze funguji na principu navesti..
|
||
Aesir Profil |
#11 · Zasláno: 5. 3. 2009, 09:40:11 · Upravil/a: Aesir
radecek:
Ono záleží dost na tom, s čím porovnáváte. Samozřejmě, že když budete porovnávat ošetření chyb přes vyjímky vs. neošetření chyb nebo jejich potlačení, tak tam rozdíl bude. Co se týče vyjímek v C (C++), tak tam hodně záleží na použitém kompilátoru a rozhodně to nelze říct obecně. Chování vyjímek a bloku try...catch bylo v PHP, ve větvi 5.2, docela dost upraveno a fixováno (například vyhodnocování try catch bloku i při nevyhození vyjímky apod.), ale ani v dřívějších verzích bych se rapidního poklesu výkonu nebál - rozhodně ne na úkor komfortu, který nabízejí. Zpět ale k vašemu problému. Například vaše třída checkForm má předopkládám metodu, která vrací true/false na dotaz o validitě údajů. Proč v případě false nenastavit členskou proměnnou, která by obsahovala pole patřičných hlášek? Takže zpracování by proběhlo např. nějak takto: if (false === $form->isValid($filteredData)) { $messages = $form->getMessages(); } else { ... } |
||
Mastodont Profil |
#12 · Zasláno: 5. 3. 2009, 10:38:48
Aesir
Uvádí to třeba Schlossnagle v Advanced PHP Programming, a to je pán, co tomu rozumí :-) Exceptions are bit slower than traditional flow-control syntaxes. |
||
Aesir Profil |
#13 · Zasláno: 5. 3. 2009, 10:53:38
Mastodont:
To ano, dobrá kniha. Vyšla v roce 2004, to byla pátá verze PHP podle changelogu teprve RC1 ;) Myslím, že pokud na jeden request nevyhodíte řádově opravdu hodně (stovky? tisíce?) vyjímek, že rozdíl opravdu nepoznáte. |
||
Mastodont Profil |
#14 · Zasláno: 5. 3. 2009, 11:36:55
Samozřejmě že se to v praxi neprojeví, ale dotaz zněl, zda zpomalují :-)
|
||
Joker Profil |
#15 · Zasláno: 5. 3. 2009, 13:45:44
radecek
Ale vyjimky by se nemeli moc pouzivat ne? Právě naopak. Výjimky by se IMHO měly používat. Typická je situace, kdy: 1. Nějaká funkce typicky vrátí nějakou hodnotu, například řetězec 2. Krom toho může nastat chyba. V takovém případě potřebuju dvě informace: že vznikla chyba a o jakou chybu jde. Případně ještě informaci "o jakou chybu jde" jednak "pro počítač" a jednak "lidsky srozumitelně". ...tohle nastává dost často a nevím o lepším způsobu řešení, než výjimky. Bez výjimek nastává to, že jedna, dvě, případně i víc úrovní v aplikaci musí detekovat a zpracovávat chybu na kterou neumí kloudně reagovat jen proto, aby se ta chyba propagovala výš na úroveň, která reagovat umí. |
||
Mastodont Profil |
#16 · Zasláno: 5. 3. 2009, 15:35:10
V takovém případě potřebuju dvě informace: že vznikla chyba a o jakou chybu jde
To se dá řešit i návratovou hodnotou funkce a výstupním parametrem ve stylu Céčka. Mně se u výjimek líbí snad jen to, že v try může být víc řádků kódu, čili neřeším chyby u každého prováděného příkazu, ale pro celý blok. |
||
Časová prodleva: 14 let
|
0