Kam s globálními funkcemi

netrunner
Člen | 7
+
0
-

Rád bych pod nette převedl jeden svůj starší projekt, ještě psaný procedurálně. Vcelku asi chápu principy MVP©, DI apod. Už jsem si pod nette i něco napsal. Jen jednu věc nedokážu pořád rozlousknout, a to kam umístit globální funkce, které jsou potřeba v celém projektu, ale nejsou specifické pro konkrétní entity. Například jde o funkci na parsování jména oproti pravidlům. A je pak už jedno, jestli jde o username, jméno položky, jiné položky, cokoliv. Cítím, že je potřeba toto řešit v Presenteru, aby model dostával už správná data. Napadají mě dvě možnosti.

  1. Všechno nacpat do BasePresenteru a od něj dědit. To mi přijde ale fuj, bude to pak „zaclánět“ i tam, kde to není třeba.
  2. Vytvořit samostatnou (statickou) Helper třídu a poté psát prostě Helper::mojeFunkce($data). To mi přijde taky malinko fuj, i když ne tak moc, jak dědění.

Kudy z toho?

David Matějka
Moderator | 6445
+
+1
-

staticke helper/utils tridy jsou ok, jen bych teda nedaval obecnou „Helper“ tridu, ale treba NameHelper::parseName.

a pak je druha vec a to, co se ma jeste delat jako staticky helper a co uz jako klasicka sluzba. ale to zalezi vzdy na konkretnim pripade. samozrejme, ze kdyz to vyzaduje nejake zavislosti, tak je sluzba jasna volba. ale i kdyz udelas vse jako sluzbu, tak nic nezkazis :)

netrunner
Člen | 7
+
0
-

Díky. Jasně, jsou to hlavně takové ty blbinky, které nepatří nikam a zároveň všude. Tak tedy spíš statické helper třídy, služby jsou sice fajn, ale na takové použití mi přijde, že je s nimi moc psaní :) Stejně, jakmile by to mělo přesáhnout funkčností do služby, pravděpodobně to je blbě navržený helper…

Editoval netrunner (6. 3. 2018 15:57)

CZechBoY
Člen | 3608
+
0
-

No on tam zas tak velkej rozdíl není… u službu musíš jen přidat do konfiguráku a potom vyžádat v konstruktoru.
Ale zase potom můžeš mít závislostí kolik chceš (nikoho nenabádám :D )