Nette Documentation Preview

syntax
Nette Application
*****************

.[perex]
Nette Application は Nette フレームワークの中核で、現代的なウェブアプリケーションを作るための強力な道具を提供します。開発を大きく楽にし、コードの安全性と保守性を高める、他にはない機能が数多く揃っています。


インストール
------

ライブラリは [Composer|best-practices:composer]でダウンロードしてインストールします。

```shell
composer require nette/application
```


なぜ Nette Application を選ぶのか
--------------------------

Nette は常にウェブ技術の先駆けであり続けてきました。

**双方向のルーター:** Nette には双方向性という点で他にない高度なルーティングのしくみがあります。URL をアプリケーションのアクションに変換するだけでなく、逆に URL を生成することもできます。つまり、
- アプリケーション全体の URL の構造を、テンプレートを直さずにいつでも変えられます
- URL が自動的に正規化され、SEO が良くなります
- ルーティングが 1 か所で定義され、アノテーションに散らばりません

**コンポーネントとシグナル:** Delphi と React.js に着想を得た組み込みのコンポーネントのしくみは、PHP のフレームワークの中でも他に例がありません。
- 再利用できる UI 要素を作れます
- 階層的なコンポーネントの組み立てに対応しています
- シグナルを使った優雅な AJAX リクエストの処理を提供します
- [Componette](https://componette.org)に既製のコンポーネントの豊富なライブラリがあります

**AJAX とスニペット:** Nette は 2009 年に、AJAX を扱う画期的な方法を導入しました。Ruby on Rails の Hotwire や Symfony UX Turbo のような似た解よりずっと前のことです。
- スニペットを使うと、JavaScript を書かずにページの一部だけを更新できます
- コンポーネントのしくみと自動的に統合されます
- ページの部分を賢く無効化します
- データの転送は最小限です

**直感的な [Latte|latte:]テンプレート:** 高度な機能を備えた、PHP で最も安全なテンプレートシステムです。
- コンテキストに応じたエスケープによる自動的な XSS 対策
- 独自のフィルタ、関数、タグで拡張できます
- テンプレートの継承と AJAX 用のスニペット
- 型システムを備えた優れた PHP 8.x サポート

**Dependency Injection:** Nette は依存性注入を全面的に活用します。
- 依存関係の自動的な受け渡し(オートワイヤリング)
- 分かりやすい NEON 形式による設定
- コンポーネントのファクトリのサポート


主な利点
----

- **安全性**: XSS、CSRF などの[脆弱性|nette:vulnerability-protection]に対する自動的な保護
- **生産性**: 賢い設計のおかげで、書く量は少なく機能は多く
- **デバッグ**: ルーティングのパネルを備えた [Tracy デバッガ|tracy:]
- **性能**: 賢いキャッシュ、コンポーネントの遅延読み込み
- **柔軟さ**: アプリケーションが完成したあとでも URL を簡単に変えられます
- **コンポーネント**: 再利用できる UI 要素の他にないしくみ
- **現代的**: PHP 8.3+ と型システムの完全なサポート


はじめに
----

1. [アプリケーションはどう動くのか |how-it-works] - 基本のアーキテクチャの理解
2. [プレゼンター |presenters] - プレゼンターとアクションの扱い
3. [テンプレート |templates] - Latte でのテンプレートの作成
4. [ルーティング |routing] - URL アドレスの設定
5. [インタラクティブなコンポーネント |components] - コンポーネントのしくみの利用


PHP の互換性
--------

| バージョン             | 対応する PHP
|-----------------------|-------------------
| Nette Application 3.3 | PHP 8.3 - 8.5
| Nette Application 3.2 | PHP 8.1 - 8.5
| Nette Application 3.1 | PHP 7.2 - 8.3
| Nette Application 3.0 | PHP 7.1 - 8.0
| Nette Application 2.4 | PHP 5.6 - 8.0

最新のパッチバージョンに適用されます。

Nette Application

Nette Application は Nette フレームワークの中核で、現代的なウェブアプリケーションを作るための強力な道具を提供します。開発を大きく楽にし、コードの安全性と保守性を高める、他にはない機能が数多く揃っています。

インストール

ライブラリは Composerでダウンロードしてインストールします。

composer require nette/application

なぜ Nette Application を選ぶのか

Nette は常にウェブ技術の先駆けであり続けてきました。

双方向のルーター: Nette には双方向性という点で他にない高度なルーティングのしくみがあります。URL をアプリケーションのアクションに変換するだけでなく、逆に URL を生成することもできます。つまり、

  • アプリケーション全体の URL の構造を、テンプレートを直さずにいつでも変えられます
  • URL が自動的に正規化され、SEO が良くなります
  • ルーティングが 1 か所で定義され、アノテーションに散らばりません

コンポーネントとシグナル: Delphi と React.js に着想を得た組み込みのコンポーネントのしくみは、PHP のフレームワークの中でも他に例がありません。

  • 再利用できる UI 要素を作れます
  • 階層的なコンポーネントの組み立てに対応しています
  • シグナルを使った優雅な AJAX リクエストの処理を提供します
  • Componetteに既製のコンポーネントの豊富なライブラリがあります

AJAX とスニペット: Nette は 2009 年に、AJAX を扱う画期的な方法を導入しました。Ruby on Rails の Hotwire や Symfony UX Turbo のような似た解よりずっと前のことです。

  • スニペットを使うと、JavaScript を書かずにページの一部だけを更新できます
  • コンポーネントのしくみと自動的に統合されます
  • ページの部分を賢く無効化します
  • データの転送は最小限です

直感的な Latteテンプレート: 高度な機能を備えた、PHP で最も安全なテンプレートシステムです。

  • コンテキストに応じたエスケープによる自動的な XSS 対策
  • 独自のフィルタ、関数、タグで拡張できます
  • テンプレートの継承と AJAX 用のスニペット
  • 型システムを備えた優れた PHP 8.x サポート

Dependency Injection: Nette は依存性注入を全面的に活用します。

  • 依存関係の自動的な受け渡し(オートワイヤリング)
  • 分かりやすい NEON 形式による設定
  • コンポーネントのファクトリのサポート

主な利点

  • 安全性: XSS、CSRF などの脆弱性に対する自動的な保護
  • 生産性: 賢い設計のおかげで、書く量は少なく機能は多く
  • デバッグ: ルーティングのパネルを備えた Tracy デバッガ
  • 性能: 賢いキャッシュ、コンポーネントの遅延読み込み
  • 柔軟さ: アプリケーションが完成したあとでも URL を簡単に変えられます
  • コンポーネント: 再利用できる UI 要素の他にないしくみ
  • 現代的: PHP 8.3+ と型システムの完全なサポート

はじめに

  1. アプリケーションはどう動くのか – 基本のアーキテクチャの理解
  2. プレゼンター – プレゼンターとアクションの扱い
  3. テンプレート – Latte でのテンプレートの作成
  4. ルーティング – URL アドレスの設定
  5. インタラクティブなコンポーネント – コンポーネントのしくみの利用

PHP の互換性

バージョン 対応する PHP
Nette Application 3.3 PHP 8.3 – 8.5
Nette Application 3.2 PHP 8.1 – 8.5
Nette Application 3.1 PHP 7.2 – 8.3
Nette Application 3.0 PHP 7.1 – 8.0
Nette Application 2.4 PHP 5.6 – 8.0

最新のパッチバージョンに適用されます。