Skip to content

Commit

Permalink
nette/di 3.2.4
Browse files Browse the repository at this point in the history
  • Loading branch information
dg committed Jan 10, 2025
1 parent 72c4081 commit eeeada5
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
14 changes: 14 additions & 0 deletions dependency-injection/cs/configuration.texy
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,25 @@ di:
# typy parametrů, které nikdy neautowirovat
excluded: ... # (string[])

# povolit lazy vytváření služeb?
lazy: ... # (bool) výchozí je false

# třída, od které dědí DI kontejner
parentClass: ... # (string) výchozí je Nette\DI\Container
```


Lazy vytváření služeb .{data-version:3.2.0}
-------------------------------------------

Nastavení `lazy: true` aktivuje lazy (odložené) vytváření služeb. To znamená, že služby nejsou skutečně vytvořeny v okamžiku, kdy si je vyžádáme z DI kontejneru, ale až ve chvíli jejich prvního použití. Což může zrychlit start aplikace a snížit paměťové nároky, protože se vytváří jen ty služby, které jsou v daném requestu skutečně potřeba.

U konkrétní služby lze lazy vytváření [vypnout|services#lazy].

.[note]
Lazy objekty lze použít pouze pro uživatelské třídy, nikoliv pro interní PHP třídy. Vyžaduje PHP 8.4 nebo novější.


Export metadat
--------------

Expand Down
18 changes: 18 additions & 0 deletions dependency-injection/cs/services.texy
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,24 @@ services:
```


Lazy služby .{data-version:3.2.0}
=================================

Lazy loading je technika, která odkládá vytvoření služby až do chvíle, kdy je skutečně potřeba. V globální konfiguraci lze [povolit lazy vytváření|configuration#Lazy vytváření služeb] pro všechny služby najednou. Pro jednotlivé služby pak můžete toto chování přepsat:

```neon
services:
foo:
create: Foo
lazy: false # tato služba se vytvoří hned při vyžádání z kontejneru i když je lazy globálně zapnuté
```

Když je služba definovaná jako lazy, při jejím vyžádání z DI kontejneru dostaneme speciální zástupný objekt. Ten vypadá a chová se stejně jako skutečná služba, ale skutečná inicializace (volání konstruktoru a setupu) proběhne až při prvním volání jakékoliv její metody nebo property.

.[note]
Lazy loading lze použít pouze pro uživatelské třídy, nikoliv pro interní PHP třídy. Vyžaduje PHP 8.4 nebo novější.


Tagy
====

Expand Down

0 comments on commit eeeada5

Please sign in to comment.