Permalink
Browse files

normalized bools in NEON to true/false

  • Loading branch information...
dg committed Sep 30, 2018
1 parent a85fe00 commit c52cb77feab91c0d18c88f198fe870f091819a73
@@ -150,13 +150,13 @@ $configurator->addDynamicParameters([
Dynamické služby
================

Do DI kontejneru můžeme vložit vlastní instanci třídy, namísto toho, aby ji vytvářel sám. Službu musíme definovat s příznakem `dynamic: yes`.
Do DI kontejneru můžeme vložit vlastní instanci třídy, namísto toho, aby ji vytvářel sám. Službu musíme definovat s příznakem `dynamic: true`.

/--neon
services:
myservice:
class: App\Model\MyCustomService
dynamic: yes
dynamic: true
\--

A v bootstrapu do kontejneru vložíme objekt:
@@ -78,7 +78,7 @@ Hodnota `scanDirs` udává, v jakých adresářích má Nette hledat presentery

/--neon
application:
scanComposer: no # default: true
scanComposer: false # default: true
scanFilter: Page # default: Presenter
scanDirs:
- foo
@@ -143,7 +143,7 @@ V konfiguračním souboru můžeme definovat i více než jedno databázové spo

Každé takto definované spojení vytvoří dvě služby - objekt `Nette\Database\Connection` pod názvem `database.[NAME].connection` (tedy v našem případě `database.main.connection` a `database.anotherDb.connection`) a objekt `Nette\Database\Context` pod názvem `database.[NAME].context`, který se používá při práci s vrstvou [Database Explorer].

Služby prvního spojení se předávají přes autowiring, nicméně můžeme to vypnout skrze `autowired: no` a naopak u jiného spojení zapnout přes `autowired: yes`.
Služby prvního spojení se předávají přes autowiring, nicméně můžeme to vypnout skrze `autowired: false` a naopak u jiného spojení zapnout přes `autowired: true`.

Služby ostatních spojení, která nejsou autowirovaná, lze předat explicitně v konfiguraci:

@@ -210,7 +210,7 @@ http:
]
\--

Framework z bezpečnostních důvodů odesílá hlavičku `X-Frame-Options: SAMEORIGIN`, která říká, že stránku lze zobrazit uvnitř jiné stránky (v elementu IFRAME) pouze pokud se nachází na stejné doméně. To může být v některých situacích nežádoucí (například pokud vyvíjíte aplikaci pro Facebook), chování lze proto vypnout nastavením položky `frames: yes`.
Framework z bezpečnostních důvodů odesílá hlavičku `X-Frame-Options: SAMEORIGIN`, která říká, že stránku lze zobrazit uvnitř jiné stránky (v elementu IFRAME) pouze pokud se nachází na stejné doméně. To může být v některých situacích nežádoucí (například pokud vyvíjíte aplikaci pro Facebook), chování lze proto vypnout nastavením položky `frames: true`.

Můžete ovlivňovat i další odesílané hlavičky nastavením http.headers. V tomto příkladě nastavujeme hlavičku Content-Security-Policy která nám dovolí stahovat externí soubory (img, script apod.) pouze z naší domény. Více o hlavičce [Content-Security-Policy |http://content-security-policy.com/].

@@ -233,7 +233,7 @@ Lze přepínat HTML a XHTML režim šablon a registrovat vlastní [Latte |latte:

/--neon
latte:
xhtml: yes # výchozí je no
xhtml: true # výchozí je no
macros:
- App\MyLatteMacros::register # statická metoda, classname nebo callable
- @App\MyLatteMacrosFactory # služba s metodou install
@@ -403,7 +403,7 @@ Všechny uvedené nastavení ovlivňují podobu DI kontejneru a systémových sl
services:
application.application:
factory: MyApplication
alteration: yes
alteration: true
\--

Příznak `alteration` je informativní a říká, že jen modifikujeme existující službu.
@@ -414,7 +414,7 @@ Můžeme také doplnit setup:
services:
application.application:
factory: MyApplication
alteration: yes
alteration: true
setup:
- $onStartup = [@resource::init]
\--
@@ -423,7 +423,7 @@ Také lze službu z kontejneru odstranit:

/--neon
services:
cache.journal: no
cache.journal: false
\--


@@ -66,7 +66,7 @@ decorator:
App\Repository\AbstractRepository:
setup:
- setConnection
inject: yes
inject: true

App\Component\BaseControl:
setup:
@@ -149,7 +149,7 @@ Parametry metod mohou být kromě řetězců a čísel i pole, lze vytvářet i
services:
analyser: My\Analyser(
FilesystemIterator(%appDir%)
[dryrun: yes, verbose: no]
[dryrun: true, verbose: false]
DateTime::createFromFormat('Y-m-d')
)
\--
@@ -379,7 +379,7 @@ services:

tempDb:
factory: PDO('sqlite::memory:')
autowired: no # služba tempDb je vyřazena z autowiringu
autowired: false # služba tempDb je vyřazena z autowiringu

articles: Model\ArticleRepository # tudíž předá do kontruktoru mainDb
\--
@@ -303,13 +303,13 @@ class Service2
}
\--

Uvedením konfigurační direktivy `inject: yes` pak můžeme zapnout i automatické volání metod `inject*` a předávání závislostí do členských proměnných označených anotací `@inject`:
Uvedením konfigurační direktivy `inject: true` pak můžeme zapnout i automatické volání metod `inject*` a předávání závislostí do členských proměnných označených anotací `@inject`:

/--neon
services:
service3:
factory: App\Service3
inject: yes
inject: true
\--

Závislost `Service1` bude předána voláním metody `inject*`, závislost `Service2` bude přiřazena do proměnné `$service2`:
@@ -344,7 +344,7 @@ Presenter jako služba

Presenter je možné zaregistrovat jako službu do konfiguračního souboru. Při jeho vytváření se však postupuje stejně, jako u libovolné jiné služby. Je tedy možné předat presenteru i parametry, které nelze dosadit pomocí autowire, a přidat volání setterů.

Volání metod `inject*` a předávání závislostí do členských proměnných s anotací `@inject` se vykoná vždy, není tedy nutné uvádět v konfiguraci `inject: yes`.
Volání metod `inject*` a předávání závislostí do členských proměnných s anotací `@inject` se vykoná vždy, není tedy nutné uvádět v konfiguraci `inject: true`.

Definice presenteru může vypadat například takto:

@@ -152,7 +152,7 @@ Dependency Injection (DI)
-------------------------

- třída `Nette\Config\Configurator` -> `Nette\Configurator`
- v konfiguračním souboru se sloučily definice `factories` a `services` do společného `services`. Jen těm, co byly původně factories, přidejte klíč `autowired: no`.
- v konfiguračním souboru se sloučily definice `factories` a `services` do společného `services`. Jen těm, co byly původně factories, přidejte klíč `autowired: false`.
- a zavedl se "odrážkový" zápis anonymních služeb:

/--neon
@@ -176,7 +176,7 @@ Pracovat přímo s DI kontejnerem není obvykle dobrý nápad, ale pokud už tak

Pokud píšete vlastní rozšíření, vězte, že došlo k přejmenování jmenných prostorů `Nette\Config` -> `Nette\DI` a `Nette\Utils\PhpGenerator` -> `Nette\PhpGenerator`.

Oproti dev-verzi jsou anotace `@inject` a metody `inject()` automaticky zpracovány jen na presenterech. Na jiných službách je zapnete uvedením klíče `inject: yes` v definici.
Oproti dev-verzi jsou anotace `@inject` a metody `inject()` automaticky zpracovány jen na presenterech. Na jiných službách je zapnete uvedením klíče `inject: true` v definici.

Používáte-li ještě stařičký `Environment`, bude po vás vyžadovat nastavenou konstantu `TEMP_DIR`, kvůli výkonu.

@@ -156,7 +156,7 @@ Přidáme komentáře?

php:
date.timezone: Europe/Prague
zlib.output_compression: yes # use gzip
zlib.output_compression: true # use gzip

database:
driver: mysql
@@ -326,7 +326,7 @@ Pokud nechceme, aby se ve vývojovém prostředí produkovala varování, může

/--neon
application:
silentLinks: yes
silentLinks: true
\--

Persistentní parametry
@@ -573,7 +573,7 @@ Routing debugger je ve výchozím nastavení povolen, pokud aplikace běží v r

/--neon
routing:
debugger: off # on by default
debugger: false # on by default
\--


@@ -148,13 +148,13 @@ $configurator->addDynamicParameters([
Dynamic Services
================

We can insert an instance of a class into the DI container directly, before the DI container creates it for us. The service must be defined with the `dynamic: yes` attribute.
We can insert an instance of a class into the DI container directly, before the DI container creates it for us. The service must be defined with the `dynamic: true` attribute.

/--neon
services:
myservice:
class: App\Model\MyCustomService
dynamic: yes
dynamic: true
\--

Create a new instance and insert it in bootstrap:
@@ -77,7 +77,7 @@ Value `scanDir` contains an array with directories where Nette looks for the pre

/--neon
application:
scanComposer: no # default: true
scanComposer: false # default: true
scanFilter: Page # default: Presenter
scanDirs:
- foo
@@ -140,7 +140,7 @@ In the configuration file, we can define more than one database connection:

Each connection defined in this way creates two services - the `Nette\Database\Connection` object named as `database.[NAME].connection` (in our case, `database.main.connection` and `database.anotherDb.connection`) and the `Nette\Database\Context` object named as `database.[NAME].context` that is used when working with the [Database Explorer] layer.

First connection services are passed through autowiring, however we can turn it off by `autowired: no`, and turn on for another connection via `autowired: yes`.
First connection services are passed through autowiring, however we can turn it off by `autowired: false`, and turn on for another connection via `autowired: true`.

Other non-autowired connections can be passed explicitly in the configuration:

@@ -206,7 +206,7 @@ HTTP Headers
]
\--

For security reasons Nette Framework sends HTTP header `X-Frame-Options: SAMEORIGIN` by default, so that the page can be embedded in iframe only from pages on the same domain. This behavior may be unwanted in certain situations (for example if you are developing a facebook application). You can override this setting by `frames: yes`, `frames: http://allowed-host.com` or `frames: no`.
For security reasons Nette Framework sends HTTP header `X-Frame-Options: SAMEORIGIN` by default, so that the page can be embedded in iframe only from pages on the same domain. This behavior may be unwanted in certain situations (for example if you are developing a facebook application). You can override this setting by `frames: true`, `frames: http://allowed-host.com` or `frames: false`.

We can also influence other sent headers by setting `http.headers`. In this example, we set a `Content-Security-Policy` header that allows us to access external files (img, script, etc.) only from our domain. For more about the [Content-Security-Policy |http://content-security-policy.com/] header.

@@ -229,7 +229,7 @@ You can turn on and off XHTML rendering mode and register custom [Latte |latte:]

/--neon
latte:
xhtml: yes # default is no
xhtml: true # default is no
macros:
- App\MyLatteMacros::register # static method, classname or callable
- @App\MyLatteMacrosFactory # service with install method
@@ -397,7 +397,7 @@ All these settings affect the contents of the DI container and the system servic
services:
application.application:
factory: MyApplication
alteration: yes
alteration: true
\--

The `alteration` flag is informative and says we only modify an existing service.
@@ -408,7 +408,7 @@ We can also add setup:
services:
application.application:
factory: MyApplication
alteration: yes
alteration: true
setup:
- $onStartup = [@resource::init]
\--
@@ -417,7 +417,7 @@ You can also remove the service from the container:

/--neon
services:
cache.journal: no
cache.journal: false
\--


@@ -66,7 +66,7 @@ decorator:
App\Repository\AbstractRepository:
setup:
- setConnection
inject: yes
inject: true

App\Component\BaseControl:
setup:
@@ -149,7 +149,7 @@ In addition to strings and numbers, the method parameters can also be arrays, cr
services:
analyser: My\Analyser(
FilesystemIterator(%appDir%)
[dryrun: yes, verbose: no]
[dryrun: true, verbose: false]
DateTime::createFromFormat('Y-m-d')
)
\--
@@ -377,7 +377,7 @@ services:

tempDb:
factory: PDO('sqlite::memory:')
autowired: no # removes tempDb from autowiring
autowired: false # removes tempDb from autowiring

articles: Model\ArticleRepository # therefore passes mainDb to constructor
\--
@@ -304,13 +304,13 @@ class Service2
}
\--

We can also add the `inject: yes` directive. This directive will enable automatic call of `inject*` methods and passing dependencies to public variables with `@inject` annotations:
We can also add the `inject: true` directive. This directive will enable automatic call of `inject*` methods and passing dependencies to public variables with `@inject` annotations:

/--neon
services:
service3:
factory: App\Service3
inject: yes
inject: true
\--

Dependency `Service1` will be passed by calling the `inject*` method, dependency `Service2` will be assigned to the `$service2` variable:
@@ -345,7 +345,7 @@ Presenter as a Service

Beginning with the Nette 2.1, you can register the presenter as a service to the configuration file. It will be created as any other service in the DI container. You can pass any parameters that could not be auto-wired (strings, numbers, etc.), and add setter calls.

All `inject*` methods will be called automatically and all dependencies will be automatically assigned to the public variables with the `@inject` annotation. You do not have to add the `inject: yes` directive.
All `inject*` methods will be called automatically and all dependencies will be automatically assigned to the public variables with the `@inject` annotation. You do not have to add the `inject: true` directive.

The presenter definition in the configuration file could look as following:

@@ -137,7 +137,7 @@ Dependency Injection (DI)
-------------------------

- class `Nette\Config\Configurator` -> `Nette\Configurator`
- definitions of factories and services in configuration file were merged into a single `services` section. Append key `autowired: no` to the factories when moving them to `services` section.
- definitions of factories and services in configuration file were merged into a single `services` section. Append key `autowired: false` to the factories when moving them to `services` section.
- introduced "bullet" syntax for anonymous services:

/--neon
@@ -161,7 +161,7 @@ Working directly with the DI container is usually not a good idea, but if you do

If you write your own extensions, you should know that these namespaces was renamed: `Nette\Config` -> `Nette\DI` and `Nette\Utils\PhpGenerator` -> `Nette\PhpGenerator`.

Compared to the dev-version the annotation `@inject` a methods `inject()` are processed automatically only for presenters. They can be enabled using key `inject: yes` in the definition.
Compared to the dev-version the annotation `@inject` a methods `inject()` are processed automatically only for presenters. They can be enabled using key `inject: true` in the definition.

If you are using old `Environment`, it will require to set constant `TEMP_DIR`.

@@ -156,7 +156,7 @@ How about comments?

php:
date.timezone: Europe/Prague
zlib.output_compression: yes # use gzip
zlib.output_compression: true # use gzip

database:
driver: mysql
@@ -326,7 +326,7 @@ If we don't want warnings to be produced in the development environment we can t

/--neon
application:
silentLinks: yes
silentLinks: true
\--

Persistent Parameters
@@ -574,7 +574,7 @@ Routing debugger is enabled by default if the application runs in a debug mode.

/--neon
routing:
debugger: off # on by default
debugger: false # on by default
\--


0 comments on commit c52cb77

Please sign in to comment.