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 da00daa
Show file tree
Hide file tree
Showing 4 changed files with 64 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 služby .{data-version:3.2.4}
---------------------------------

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í [změnit|services#Lazy služby].

.[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.4}
=================================

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 služby] 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
```

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
14 changes: 14 additions & 0 deletions dependency-injection/en/configuration.texy
Original file line number Diff line number Diff line change
Expand Up @@ -96,11 +96,25 @@ di:
# parameter types that you never autowire
excluded: ... # (string[])

# enable lazy service creation?
lazy: ... # (bool) default is false

# the class from which the DI container inherits
parentClass: ... # (string) defaults to Nette\DI\Container
```


Lazy Services .{data-version:3.2.4}
-----------------------------------

Setting `lazy: true` enables lazy (deferred) creation of services. This means that services are not actually created when requested from the DI container, but only upon their first usage. This can speed up application startup and reduce memory usage since only the services required for a specific request are created.

For a specific service, lazy creation can be [adjusted |services#Lazy Services].

.[note]
Lazy objects can only be used for user-defined classes, not for internal PHP classes. It requires PHP 8.4 or newer.


Metadata Export
---------------

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


Lazy Services .{data-version:3.2.4}
===================================

Lazy loading is a technique that delays the creation of a service until it is actually needed. You can enable [lazy service creation globally |configuration#Lazy Services] in the configuration for all services at once. For individual services, this behavior can be overridden:

```neon
services:
foo:
create: Foo
lazy: false
```

When a service is defined as lazy, requesting it from the DI container will return a special proxy object. This proxy looks and behaves like the actual service, but the real initialization (constructor call and setup) will only occur upon the first invocation of any of its methods or properties.

.[note]
Lazy loading can only be used for user-defined classes, not for internal PHP classes. It requires PHP 8.4 or newer.


Tags
====

Expand Down

0 comments on commit da00daa

Please sign in to comment.