Kam ukladat factories? [Nette 2.1]

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
peci1
Člen | 60
+
0
-

Ahoj, precetl jsem si clanek https://doc.nette.org/…tion/factory .

A marne premyslim, kam bych asi tak mel ve skeletonu aplikace ulozit vznikly interface IRegistrationControlFactory.

Nejake navrhy? Za soucast modelu bych ho nepovazoval, takze budto slozka app/services, prip. app/boilerplate? :)

Idealni by samozrejme bylo zadnou takovou tridu nepotrebovat a proste si moct v config.neon nakonfigurovat, ze IRegistrationControlFactory je tovarnicka na typ RegistrationControl a kod by mohl byt vygenerovany automaticky. Nejsem v 2.0 a 2.1 tak zbehly, abych dokazal posoudit, jestli je to mozne.

Jeste mam jeden napad – pokud tu factory pouziju jenom v jednom presenteru, proste ten interface prilepim na konec souboru s presenterem. Sice nic moc reseni z pohledu cistoty kodu, ale muze mi byt vlastne skoro jedno, kam se nejaky ten boilerplate strci =)

A jeden OT: proc u toho clanku nejdou komentare?

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Já interface vždycky ukládám do stejné složky, ve které je daná komponenta.

peci1
Člen | 60
+
0
-

vojtech.dobes napsal(a):

Já interface vždycky ukládám do stejné složky, ve které je daná komponenta.

Takze treba i do app/presenters?

David Matějka
Moderator | 6445
+
0
-

zalezi, kam ukladas komponenty. ja si komponenty (a k tomu i tovarnicky) ukladam do app/components, respektive app/FooModule/components

vvoody
Člen | 910
+
0
-
  • umiestnenie – vec osobnej preferencie
  • generovanie – bez interface to nejde. Pre mňa je dostatočným dôvodom to, že mám autocomplete v IDE pri zadávaní závislostí do typehintu/anotácie. Ďalší dôvod je že máš jasne zadefinované závislosti, miesto nejakej mágie alebo používania service lokátoru
  • interface vo súbore inej triedy – nie som si istý či tam ten interface robot loader nanajde. Ak nie tak kľudne sa si môže stať, že interface budeš potrebovať skorej než sa includne presenter (npr compilovanie configu).
  • komentare – asi preto, že ich nikto nesleduje. Myslím že sú vypnuté na celom webe.
peci1
Člen | 60
+
0
-

Dobre, diky za nazory :) Tak to vypada, ze diky DI mame hezky (skoro) ciste presentery, ale zato filesystem dostava zabrat :)

Šaman
Člen | 2640
+
0
-

Umístění – pokud používáš RobotLoader, tak je to jedno, ale IMHO není dobré dávat interface továrny moc daleko od komponenty, kterou vytváří. Napoví ti i namespace – i když není potřeba dodržovat PSR-0, tak jako pomůcka pro to kde daný soubor hledat je to dobré.

Interface v souboru jiné třídy v Nette projde, RobotLoader si s tím poradí. Já jsem měl interface často v souboru s komponentou. Do souboru s presenterem bych ho ale nedával. Dneska už mám raději malý samostatný soubor.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Já mám většinou následující strukturu, a jsem s ní spokojen:

app
└── components
    ├── Foo
    │   ├── Control.php
    │   ├── IFactory.php
    │   └── template.latte
    ├── BarControl.php
    ├── IBarControlFactory.php
    └── BarControl.latte

Přibližně v tomto stylu :)

Editoval vojtech.dobes (14. 2. 2014 7:59)