-
-
Notifications
You must be signed in to change notification settings - Fork 281
doc-2.1: Getting dependencies (new page) #87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Tohle je spíš do wiki než přímo do dokumentace, ne? |
It seems to me to be almost similar as fprochazka described in his DI tutorial. Maybe it could be a good idea to point it out... |
|
||
Preferovaný způsob předávání závislostí je pomocí anotace `@inject`, neboť nekomplikuje kód a Nette se o předání správné závislosti stará automaticky. | ||
|
||
Pokud potřebujete přesně definovat kontrakt presenteru (může být vhodné například pro testování), použijte metody `@inject`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
typo - použijte metody @inject
=> použijte metody inject*
Please switch encoding from CP1250 -> UTF8. |
\-- | ||
|
||
Nette opět může takto anotovanou vlastnost najít a automaticky vlastnost injektovat. Jako typ třídy však musí být uveden její plně kvalifikovaný název, tj. včetně celé cesty v namespace. Nelze využít názvů tříd importovaných pomocí direktiv `use`. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
„Nelze využít názvů tříd importovaných pomocí direktiv use.“ Od verze 2.2 je tomu právě naopak. Asi bych se vyhnul slovu importovaných (jde o aliasy) a kvalifikovaných a napsal: „Jako typ třídy musí být uveden její plný název včetně celého namespace. Od verze Nette 2.2 lze využít aliasů definovaných pomocí use.“
|
||
Od Nette 2.1 je možné používat továrny generované proti rozhraní. U rozhraní stačí u příslušných metod uvést anotaci `@return`, která říká, instanci jaké třídy má továrna vytvářet. Nette pak pro rozhraní vygeneruje správnou implementaci. | ||
|
||
Rozhraní musí mít právě jednu metodu pojmenovanou `create`, nebo `get`. Naše rozhraní pro komponentu může vypadat například takto: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
get neni na tovarny, ale accessory. mozna bych to vubec nezminoval :) je to takovej easter egg, kterej svadi ke zneuziti...
ping @jsmitka |
@dg I was ill recently, so I have some work to catch up with. I'll try to fix the page and translate it during this weekend, probably before or after #posobota. |
\-- | ||
|
||
Objektu je možné závislost předat až po jeho vytvoření. Tento způsob je vhodný pouze pro nepovinné závislosti, které nejsou pro funkci třídy nezbytné, neboť není garantováno, že objekt závislost skutečně dostane. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nehodilo by se tady ukázat, že settery je možné volat z config.neon v definici služby?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Jak už zmínil David, je to uvedeno později. Nechci do sebe míchat obecné případy a konkrétní aplikaci na objekty v Nette.
Jen chci dodat, že tenhle článek je naprostá bomba a že určitě patří do dokumentace. Díky!! |
} | ||
\-- | ||
|
||
Tento způsob je však nevhodný, neboť členská proměnná musí být deklarována jako `public` a nemáme kontrolu nad tím, že předaná závislost bude skutečně daného typu. Přicházíme také o možnost reagovat na nově přiřazenou závislost vlastním kódem a porušujeme také princip zapouzdření. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
deklarována jako public
, a tudíž nemáme...
Nevyplatilo by se to dát do dokumentace alespoň česky a hned? |
Asi ne, v posledních dnech jsem pomalu překládal a už to mám skoro hotové. Do večera aktualizuji. |
Super! |
Tak konečně po měsíci a něco sepsáno - připomínky vítány, anglická verze určitě potřebuje proofreading ještě od někoho jiného. |
Můžeš to prosím spojit do jednoho komitu a mergnout? Případné opravy se udělají později. |
doc-2.1: Getting dependencies.
👍 |
Draft of a new chapter of documentation that discusses possibilities of getting dependencies into application classes and provides a list of examples on various types of injections for presenters, components and services.
The page will be further extended to contain some specific cases, like presenters or component factories registered in the DI Container.
This draft is currently only in Czech language, it will by translated after corrections and expansion.
Any feedback is welcome.