Neon a služba implementujúca rozhranie
- Čamo
- Člen | 798
Prosím vás, narazli som na takýto neon zápis:
- {create: App\Components\Auth\SignIn, implement: App\Components\Auth\ISignInFactory, inject: yes}
pričom definícia triedy SignIn je bez rozhrania:
class SignIn extends BaseControl
Naozaj je možné to takto zapísať? Teda, že v triede nieje potrebné uvesť
class SignIn extends BaseControl implements ISignInFactory
či ako to funguje?
EDIT:
či vlastne táto trieda SignIn ani rozhranie ISignIn implementovať nemá a tá
factory sa vytvára automaticky?
Editoval Čamo (2. 11. 2015 22:07)
- Oli
- Člen | 1215
Tu faktory si musíš napsat. Měla by vypadat nějak takhle
interface IMyServiceFactory {
/**
* @return MyService
*/
function create();
}
A ani to takhle složitě nemusíš psát do configu, pokud nepotřebuješ něco speciálního. @mrtnzlml (sakra, nikdy nevím jak to přesně je, ta doména je mnohem lepší na zapamatování, aspoň, že nick máš tam) napsal pěknej článek ohledně toho: http://zlml.cz/…nitive-guide
- iNviNho
- Člen | 352
Ešte len poradím, alebo teda pripomeniem.
To, čo napíšeš v config.neone sa kompiluje a výsledkom je Container, ktorý si môžeš pozrieť v temp/cache/Nette.configurator …
Takže ak do config.neone do services napíšeš:
<?php
- App\Services\IUserFactory
?>
Tak sa z toho vygeneruje =>
<?php
final class Container_8d5996a97f_App_Services_IUserFactoryImpl_64_App_Services_IUserFactory implements App\Services\IUserFactory
{
private $container;
public function __construct(Container_8d5996a97f $container)
{
$this->container = $container;
}
public function create($name, $surname, $id = NULL)
{
$service = new App\Services\User($name, $surname, $id, $this->container->getService('63_App_Repository_UserRepository'));
return $service;
}
}
?>
A v presenteri len požiadaš továrničku o vytvorenie usera
<?php
$user = $this->userFactory->create("Vlado", "Vráb");
?>
Editoval iNviNho (3. 11. 2015 14:12)
- Pavel Kravčík
- Člen | 1196
mrtnzlml napsal(a):
Oli napsal(a):
@mrtnzlml (sakra, nikdy nevím jak to přesně je, ta doména je mnohem lepší na zapamatování, aspoň, že nick máš tam)
Protip: je to moje jméno bez samohlásek. S touto pomůckou to lidi většinou začnou psát správně… (-:
Nezačnou. :D