Nette Documentation Preview

syntax
アプリケーション設定
**********

.[perex]
Netteアプリケーションの設定オプションの概要。


Application
===========

```neon
application:
	# Tracy BlueScreenに「Nette Application」パネルを表示しますか?
	debugger: ...           # (bool) デフォルトは true

	# エラー時に error-presenter を呼び出しますか?
	# 開発モードでのみ効果があります
	catchExceptions: ...    # (bool) デフォルトは true

	# error-presenter の名前
	errorPresenter: Error   # (string|array) デフォルトは 'Nette:Error'

	# Presenterとアクションのエイリアスを定義します
	aliases: ...

	# Presenter名をクラスに変換するルールを定義します
	mapping: ...

	# 不正なリンクは警告を生成しませんか?
	# 開発モードでのみ効果があります
	silentLinks: ...        # (bool) デフォルトは false
```

`nette/application` バージョン 3.2 以降、エラープレゼンターのペアを定義できます。

```neon
application:
	errorPresenter:
		4xx: Error4xx   # Nette\Application\BadRequestException 例外用
		5xx: Error5xx   # その他の例外用
```

`silentLinks` オプションは、リンク生成が失敗した場合(例えば、Presenterが存在しないためなど)に、開発モードでNetteがどのように動作するかを決定します。デフォルト値 `false` は、Netteが `E_USER_WARNING` エラーをスローすることを意味します。`true` に設定すると、このエラーメッセージが抑制されます。本番環境では、`E_USER_WARNING` は常に発生します。この動作は、Presenter変数 [$invalidLinkMode |creating-links#不正なリンク] を設定することでも制御できます。

[エイリアスは、頻繁に使用されるPresenterへのリンクを簡略化 |creating-links#エイリアス]します。

[マッピングは、Presenter名からクラス名を導出するルールを定義 |directory-structure#Presenterのマッピング]します。


Presenterの自動登録
--------------

NetteはPresenterをサービスとしてDIコンテナに自動的に追加し、これによりPresenterの作成が大幅に高速化されます。NetteがPresenterをどのように検索するかは設定可能です。

```neon
application:
	# ComposerクラスマップでPresenterを検索しますか?
	scanComposer: ...      # (bool) デフォルトは true

	# クラス名とファイル名が一致する必要があるマスク
	scanFilter: ...        # (string) デフォルトは '*Presenter'

	# どのディレクトリでPresenterを検索しますか?
	scanDirs:              # (string[]|false) デフォルトは '%appDir%'
		- %vendorDir%/mymodule
```

`scanDirs` にリストされたディレクトリは、デフォルト値 `%appDir%` を上書きするのではなく、補完します。したがって、`scanDirs` には `%appDir%` と `%vendorDir%/mymodule` の両方のパスが含まれます。デフォルトのディレクトリを除外したい場合は、値を上書きする[感嘆符 |dependency-injection:configuration#マージ]を使用します。

```neon
application:
	scanDirs!:
		- %vendorDir%/mymodule
```

ディレクトリのスキャンは、false値を指定することで無効にできます。Presenterの自動追加を完全に抑制することはお勧めしません。そうしないと、アプリケーションのパフォーマンスが低下します。


Latte テンプレート
============

この設定により、コンポーネントとPresenterにおけるLatteの動作をグローバルに影響させることができます。

```neon
latte:
	# メインテンプレート(true)またはすべてのコンポーネント(all)に対してTracy BarにLatteパネルを表示しますか?
	debugger: ...        # (true|false|'all') デフォルトは true

	# declare(strict_types=1) ヘッダーを持つテンプレートを生成します
	strictTypes: ...     # (bool) デフォルトは false

	# [厳密なパーサーモード |latte:develop#striktní režim]を有効にします
	strictParsing: ...   # (bool) デフォルトは false

	# [生成されたコードのチェック |latte:develop#Kontrola vygenerovaného kódu]を有効にします
	phpLinter: ...       # (string) デフォルトは null

	# ロケールを設定します
	locale: cs_CZ        # (string) デフォルトは null

	# $this->template オブジェクトのクラス
	templateClass: App\MyTemplateClass # デフォルトは Nette\Bridges\ApplicationLatte\DefaultTemplate
```

Latteバージョン3を使用している場合は、次のようにして新しい[拡張機能 |latte:extending-latte#Latte Extension]を追加できます。

```neon
latte:
	extensions:
		- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)
```

Latteバージョン2を使用している場合は、クラス名を指定するか、サービスへの参照を指定することで、新しいタグ(マクロ)を登録できます。デフォルトでは `install()` メソッドが呼び出されますが、別のメソッド名を指定することで変更できます。

```neon
latte:
	# カスタムLatteタグの登録
	macros:
		- App\MyLatteMacros::register         # 静的メソッド、クラス名またはcallable
		- @App\MyLatteMacrosFactory           # install() メソッドを持つサービス
		- @App\MyLatteMacrosFactory::register # register() メソッドを持つサービス

services:
	- App\MyLatteMacrosFactory
```


ルーティング
======

基本設定:

```neon
routing:
	# Tracy Barにルーティングパネルを表示しますか?
	debugger: ...   # (bool) デフォルトは true

	# ルーターをDIコンテナにシリアライズします
	cache: ...      # (bool) デフォルトは false
```

ルーティングは通常、[RouterFactory |routing#ルートコレクション]クラスで定義します。あるいは、`maska: akce` のペアを使用して設定でルートを定義することもできますが、この方法では設定の柔軟性がそれほど高くありません。

```neon
routing:
	routes:
		'detail/<id>': Admin:Home:default
		'<presenter>/<action>': Front:Home:default
```


定数
=========

PHP定数の作成。

```neon
constants:
	Foobar: 'baz'
```

アプリケーション起動後、`Foobar` 定数が作成されます。

.[note]
定数は、グローバルにアクセス可能な変数として使用すべきではありません。オブジェクトに値を渡すには、[依存関係注入 |dependency-injection:passing-dependencies]を使用してください。


PHP
===

PHPディレクティブの設定。すべてのディレクティブの概要は[php.net |https://www.php.net/manual/en/ini.list.php]にあります。

```neon
php:
	date.timezone: Europe/Prague
```


DI サービス
=======

これらのサービスはDIコンテナに追加されます。

| 名前           | 型                        | 説明
|----------------------------------------------------------
| `application.application`	     | [api:Nette\Application\Application]      |  [アプリケーション全体の起動 |how-it-works#Nette Application]
| `application.linkGenerator`    | [api:Nette\Application\LinkGenerator]    |  [LinkGenerator |creating-links#LinkGenerator]
| `application.presenterFactory` | [api:Nette\Application\PresenterFactory] |  Presenter のファクトリ
| `application.###`              | [api:Nette\Application\UI\Presenter]     |  個々の Presenter
| `latte.latteFactory`           | [api:Nette\Bridges\ApplicationLatte\LatteFactory] | `Latte\Engine` オブジェクトのファクトリ
| `latte.templateFactory`        | [api:Nette\Application\UI\TemplateFactory] | [`$this->template` |templates] のファクトリ

アプリケーション設定

Netteアプリケーションの設定オプションの概要。

Application

application:
	# Tracy BlueScreenに「Nette Application」パネルを表示しますか?
	debugger: ...           # (bool) デフォルトは true

	# エラー時に error-presenter を呼び出しますか?
	# 開発モードでのみ効果があります
	catchExceptions: ...    # (bool) デフォルトは true

	# error-presenter の名前
	errorPresenter: Error   # (string|array) デフォルトは 'Nette:Error'

	# Presenterとアクションのエイリアスを定義します
	aliases: ...

	# Presenter名をクラスに変換するルールを定義します
	mapping: ...

	# 不正なリンクは警告を生成しませんか?
	# 開発モードでのみ効果があります
	silentLinks: ...        # (bool) デフォルトは false

nette/application バージョン 3.2 以降、エラープレゼンターのペアを定義できます。

application:
	errorPresenter:
		4xx: Error4xx   # Nette\Application\BadRequestException 例外用
		5xx: Error5xx   # その他の例外用

silentLinks オプションは、リンク生成が失敗した場合(例えば、Presenterが存在しないためなど)に、開発モードでNetteがどのように動作するかを決定します。デフォルト値 false は、Netteが E_USER_WARNING エラーをスローすることを意味します。true に設定すると、このエラーメッセージが抑制されます。本番環境では、E_USER_WARNING は常に発生します。この動作は、Presenter変数 $invalidLinkMode を設定することでも制御できます。

エイリアスは、頻繁に使用されるPresenterへのリンクを簡略化します。

マッピングは、Presenter名からクラス名を導出するルールを定義します。

Presenterの自動登録

NetteはPresenterをサービスとしてDIコンテナに自動的に追加し、これによりPresenterの作成が大幅に高速化されます。NetteがPresenterをどのように検索するかは設定可能です。

application:
	# ComposerクラスマップでPresenterを検索しますか?
	scanComposer: ...      # (bool) デフォルトは true

	# クラス名とファイル名が一致する必要があるマスク
	scanFilter: ...        # (string) デフォルトは '*Presenter'

	# どのディレクトリでPresenterを検索しますか?
	scanDirs:              # (string[]|false) デフォルトは '%appDir%'
		- %vendorDir%/mymodule

scanDirs にリストされたディレクトリは、デフォルト値 %appDir% を上書きするのではなく、補完します。したがって、scanDirs には %appDir%%vendorDir%/mymodule の両方のパスが含まれます。デフォルトのディレクトリを除外したい場合は、値を上書きする感嘆符を使用します。

application:
	scanDirs!:
		- %vendorDir%/mymodule

ディレクトリのスキャンは、false値を指定することで無効にできます。Presenterの自動追加を完全に抑制することはお勧めしません。そうしないと、アプリケーションのパフォーマンスが低下します。

Latte テンプレート

この設定により、コンポーネントとPresenterにおけるLatteの動作をグローバルに影響させることができます。

latte:
	# メインテンプレート(true)またはすべてのコンポーネント(all)に対してTracy BarにLatteパネルを表示しますか?
	debugger: ...        # (true|false|'all') デフォルトは true

	# declare(strict_types=1) ヘッダーを持つテンプレートを生成します
	strictTypes: ...     # (bool) デフォルトは false

	# [厳密なパーサーモード |latte:develop#striktní režim]を有効にします
	strictParsing: ...   # (bool) デフォルトは false

	# [生成されたコードのチェック |latte:develop#Kontrola vygenerovaného kódu]を有効にします
	phpLinter: ...       # (string) デフォルトは null

	# ロケールを設定します
	locale: cs_CZ        # (string) デフォルトは null

	# $this->template オブジェクトのクラス
	templateClass: App\MyTemplateClass # デフォルトは Nette\Bridges\ApplicationLatte\DefaultTemplate

Latteバージョン3を使用している場合は、次のようにして新しい拡張機能を追加できます。

latte:
	extensions:
		- Latte\Essential\TranslatorExtension(@Nette\Localization\Translator)

Latteバージョン2を使用している場合は、クラス名を指定するか、サービスへの参照を指定することで、新しいタグ(マクロ)を登録できます。デフォルトでは install() メソッドが呼び出されますが、別のメソッド名を指定することで変更できます。

latte:
	# カスタムLatteタグの登録
	macros:
		- App\MyLatteMacros::register         # 静的メソッド、クラス名またはcallable
		- @App\MyLatteMacrosFactory           # install() メソッドを持つサービス
		- @App\MyLatteMacrosFactory::register # register() メソッドを持つサービス

services:
	- App\MyLatteMacrosFactory

ルーティング

基本設定:

routing:
	# Tracy Barにルーティングパネルを表示しますか?
	debugger: ...   # (bool) デフォルトは true

	# ルーターをDIコンテナにシリアライズします
	cache: ...      # (bool) デフォルトは false

ルーティングは通常、RouterFactoryクラスで定義します。あるいは、maska: akce のペアを使用して設定でルートを定義することもできますが、この方法では設定の柔軟性がそれほど高くありません。

routing:
	routes:
		'detail/<id>': Admin:Home:default
		'<presenter>/<action>': Front:Home:default

定数

PHP定数の作成。

constants:
	Foobar: 'baz'

アプリケーション起動後、Foobar 定数が作成されます。

定数は、グローバルにアクセス可能な変数として使用すべきではありません。オブジェクトに値を渡すには、依存関係注入を使用してください。

PHP

PHPディレクティブの設定。すべてのディレクティブの概要はphp.netにあります。

php:
	date.timezone: Europe/Prague

DI サービス

これらのサービスはDIコンテナに追加されます。

名前 説明
application.application Nette\Application\Application アプリケーション全体の起動
application.linkGenerator Nette\Application\LinkGenerator LinkGenerator
application.presenterFactory Nette\Application\PresenterFactory Presenter のファクトリ
application.### Nette\Application\UI\Presenter 個々の Presenter
latte.latteFactory Nette\Bridges\ApplicationLatte\LatteFactory Latte\Engine オブジェクトのファクトリ
latte.templateFactory Nette\Application\UI\TemplateFactory $this->template のファクトリ