Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Jana J. 06. 05. 2014, 11:42:12

Název: PHP - Hledám vhodný název třídy
Přispěvatel: Jana J. 06. 05. 2014, 11:42:12
Zdravím, potřebuji vytvořit pomocnou třídu, která bude parsovat url, zjišťovat přihlášení uživatele, kontrolovat error404, čísla stránky atd.. Poradí někdo vhodný název? Díky
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: asdfsdaf 06. 05. 2014, 11:45:31
prasacky_navrzena_trida
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: ja 06. 05. 2014, 11:47:11
MasloStroj
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Lol Phirae 06. 05. 2014, 12:10:43
ParseUrl_Login_Error404_FindPageNumber_Helper_Dafuq

 ::) ;D  :o

P.S. Pokud se vám pomoc nezdá konstruktivní, bude to patrně tím, že podle popisu funkcí je název toho příšerného bastlu naprosto posledním problémem, který by vás měl trápit.

Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Logik 06. 05. 2014, 12:17:07
Už to tady v podstatě zaznělo, ale jedna ze zásad OOP je, že pokud máš něco problém pojmenovat, tak to je špatně navržený.

Každá třída by měla dělat pokudmožno pouze jednu věc a měla bys o ní být schopna říci, co dělá (jaká je její zodpovědnost). Pokud to má být nějaká třída starající se o celý běh webové aplikace, zkus z ní jednotlivé činnosti vyčlenit do samostatných tříd...
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Jana J. 06. 05. 2014, 12:19:40
Už to tady v podstatě zaznělo, ale jedna ze zásad OOP je, že pokud máš něco problém pojmenovat, tak to je špatně navržený.

Každá třída by měla dělat pokudmožno pouze jednu věc a měla bys o ní být schopna říci, co dělá (jaká je její zodpovědnost). Pokud to má být nějaká třída starající se o celý běh webové aplikace, zkus z ní jednotlivé činnosti vyčlenit do samostatných tříd...

Děkuji, právě mi přišlo špatné, vytvářet samostatné třídy ve které bude jedna metoda...
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Kit 06. 05. 2014, 12:28:32
Děkuji, právě mi přišlo špatné, vytvářet samostatné třídy ve které bude jedna metoda...
Takové třídy jsou v OOP běžné.
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Kit 06. 05. 2014, 12:38:42
Zdravím, potřebuji vytvořit pomocnou třídu, která bude parsovat url, zjišťovat přihlášení uživatele, kontrolovat error404, čísla stránky atd.. Poradí někdo vhodný název? Díky
Parsování URL - něco s tím výsledkem budeš asi dělat. Konstruktoru můžeš předat URL, výsledek se uloží v atributech. Pak zavoláš tovární metodu, která ti vyrobí z toho URL potřebnou třídu na zpracování.

Přihlášení uživatele - další samostatná třída, která není tak triviální, jak na první pohled vypadá. Vzniklý objekt poskytuje autorizační informace - na to jedna metoda obvykle nestačí.

Kontrola error404 bude zřejmě součástí parsování URL, při pokusu o výrobu nevyrobitelného objektu.

Číslování stránek - to bude asi součástí vieweru. O to se může postarat výstupní šablona.
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Jana J. 06. 05. 2014, 12:47:25
Chtěla jsem to cpát do jedé class z důvodu, abych taky všude netahala spoustu instanci. Podívám se ještě na nějaké názorné příklady. Moc děkuji za pomoc.
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: none_ 06. 05. 2014, 16:25:18
Tohle vypadá jako klasický příklad na použití návrhového vzoru (hezky česky) Fasáda.:) http://en.wikipedia.org/wiki/Facade_pattern
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: MalyTomi 06. 05. 2014, 17:08:01
ked som este robil v php, tak tiez som mal jednu triedu, kde bolo vsetko co sa tykalo db, parsovanie url, a vlastne vsetky funkcie.
Fungovalo to bez problemov a dost svizne (bol to intenzivne navstevovany eshop). triedu som nazval podla firmy, pre ktoru to bolo.
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: mkub 06. 05. 2014, 17:17:42
navrh triedy, ktora robi uplne vsetko je zly navrh a v PHP je caste, ze jeden obrovsky projekt sa sklada z viacerych stavebnych kamenov ako skladacka (parser_URL, SQL,...)
a je to aj ovela lahsie udrzatelne...
a trieda by mala robit iba jednu ciastkovu cinnost z celej aplikacie (nie parsovatURL, prihlasovat uzivatelov, pracovat s nakupnym kosikom,...)
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Sten 06. 05. 2014, 17:44:41
Takové třídě se říká router. Ale je důležité podotknout, že ona nic z toho ve skutečnosti nedělá, pouze to přepošle instanci jiné třídy, kterou umí najít, a výsledky složí do nějaké stavové proměnné.
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Tomas 06. 05. 2014, 18:18:08
Pro jednoradkove funkce/metody muzes klidne vytvorit utilitni tridu (vse static). A pak to nazvat treba Utils (v nejakem namespace).
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Bla 06. 05. 2014, 18:35:06
Tohle vypadá jako klasický příklad na použití návrhového vzoru (hezky česky) Fasáda.:) http://en.wikipedia.org/wiki/Facade_pattern

Ano, to je poměrně hezké a čisté řešení.
Existují shluky malých a často nesouvisejících metod, které se dají takto obalit, ale nevím, jestli to standardní zprasovatel (programátor v PHP) zvládne  ;D
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: perceptron 06. 05. 2014, 20:16:01
este mi napada otazka: naco je mat vobec v takomto php pripade triedu, ked je to len obal na nahodne zhromazdene funkcie? ;-)
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: none_ 06. 05. 2014, 20:43:51
Fasáda není obal na nahodne shromáždené fce. Má místo toho ulehčit práci s objekty. Dejme tomu, že pro ověření, zda uživatel může na stránku potřebuju vytáhnout uživatele podle session, převzít název stránky z url a obe informace ověřit proti DB. Tzn mám dejme tomu 3 třídy, které umožňují provést jednotlivé požadované kroky (uživatel, urlparametry, ověření) a budu podobnou činnost dělat na více stránkách opakovaně. Proto abstrahuji posloupnost kroků do metody fasády a pouze parametrizuji vstup a kontroluji výstup. Tzn skrývá mi to složitou logiku.
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Bla 06. 05. 2014, 20:59:39
Ano, má to význam.

Řekněme tomu třeba buffer.
Než abys tady nechal nějaké svinstvo různě povalovat stylem támhle kousek bordelu, tady špínu, támhle papírek, šoupneš to do jedné krabičky a máš uklizeno. Pokud se ti v té krabičce nastřádá deset podobných kravinek, zjistíš to snáz, než abys (což nikdo PAK STEJNĚ nedělá) prohledával kód a koukal se, jestli se někde nedá něco spojit.

Já třeba nemám rád samostatné třídy obsahující tři řádky kódu, který něco provádí! Když už, tak je obalit!

Další výhoda "Maslostroje" je v tom, že když se rozhodneš nějaký bordel sloučit, hledáš odkazy jen na "Maslostroj".

Pokud nejsi sprasovatel (čti programátor v PHP) definuješ, že bordel může být jen v _MasloStroj a nikde jinde, takže buď to píšeš čistě, nebo přidáváš do _MasloStroje. S trochou píle se dá _MasloStroj uklidit, takže výsledkem bude sice chrchel na první pohled nesouvisejících metod, ale protože _MasloStroj je jen obálka (fasáda) pak i v tom svém bufferu máš pořádek.

Jsou programátoři, kteří programují řekněme živelně a ti, kteří si vše dobře naplánují.
Pokud patříte k těm živelným, v první fázi vše naboucháte do _MasloStroje, ale už předem počítáte s tím, že se to bude muset přepsat.
Ten kdo nemyslí deset tahů dopředu si s tím může i vystačit. Jak třídy do _MasloStroje (ten název se mi moc líbí!) přibývají, poškrábete se na kebuli a začnete v tom dělat pořádek, takže se obsah bufferu vyprazdňuje a zůstane tam jen skutečný herberk.
Někomu to vyhovuje, když napíšete většinu funkcí, kouknete se na to a celé to zjednodušíte.
No někdo si zase raději napíše specifikaci a ti nejšťastnější z nás to píšou z voleje dočista.
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Bla 06. 05. 2014, 21:04:34
Fasáda není obal na nahodne shromáždené fce. Má místo toho ulehčit práci s objekty. Dejme tomu, že pro ověření, zda uživatel může na stránku potřebuju vytáhnout uživatele podle session, převzít název stránky z url a obe informace ověřit proti DB. Tzn mám dejme tomu 3 třídy, které umožňují provést jednotlivé požadované kroky (uživatel, urlparametry, ověření) a budu podobnou činnost dělat na více stránkách opakovaně. Proto abstrahuji posloupnost kroků do metody fasády a pouze parametrizuji vstup a kontroluji výstup. Tzn skrývá mi to složitou logiku.

Tak to zřejmě bylo původně myšleno, to nepopírám :P
V každém případě to funguje i na udržení pořádku, což v tomhle případě řešíme ne?
Protože pokud použiješ Fasádu jako obal na bordel, máš bordel v nejhorším na jednom místě, což je lepší, než ho mít všude v kódu.
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Bla 06. 05. 2014, 21:14:43
Dřív jsem malé a nicnedělající třídy flákal jako Baťa cvičky, až jsem zjistil, že to je kontraproduktivní, protože s jejich narůstajícím počtem vzniká problém se v nich vyznat a co hůř, udělat je znovupoužitelné, tedy když programuju "divoce". Použití malých samostatných tří vedlo jen k tomu, že jsem nevytvářel znovupoužitelný kód, protože poprvé jsem tu třídu "tak teda udělal", podruhé to "nějak ohnul", potřetí přepsal a počtrvé k tomu ve fofru přidělal nějaký cancour, který dělal kdo ví co. Od té doby si třídy, které nejsou na první pohled nikam snadno zařaditelné, cpu do tohoto bufferu a když se tam toho objeví víc, a já už vím, co to všechno bude muset dělat, navrhnu dobrou třídu, navrhnu jí správně a z bufferu to vyndám. Díky tomu se mi v kódu neválí chrchle zapomenutého kódu.

App, můžete se mě pokusit přesvědčit, že je lepší mít deset "skoronicnedělajících" tříd než jeden bordel buffer.
Rád bych slyšel nějaké opravdu pádné argumenty.

A zase, netvrdím, že to bude vyhovovat 9ti z 10ti programátorů, tvrdím, že to vyhovuje mě, schovávat svinstvo za fasádu, pak si tam uklidit a kód je v pohodě.
Název: Re:PHP - Hledám vhodný název třídy
Přispěvatel: Tany 06. 05. 2014, 22:23:51
Facade je opravdu dobrý vzor, pokud je potřeba něco rychle naprasit. Wrapper se mi pak stará o konzistenci a hacky (rekurze). Většinu lidí zajímají akorát dvě věci: 1) Za kolik, 2) Za jak dlouho. U jednorázovek to stejně skončí u toho _MasloStroje, pokud se na tom dělá dále, tak se uklízí.