Kam ukladat factories? [Nette 2.1]
- peci1
- Člen | 60
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
Já interface vždycky ukládám do stejné složky, ve které je daná komponenta.
- David Matějka
- Moderator | 6445
zalezi, kam ukladas komponenty. ja si komponenty (a k tomu i tovarnicky) ukladam do app/components, respektive app/FooModule/components
- vvoody
- Člen | 910
- 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.
- Šaman
- Člen | 2665
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
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)