型システム

型システムは堅牢なアプリケーション開発の鍵となります。Latteはテンプレートにも型サポートを導入します。各変数にどのようなデータ型またはオブジェクト型が含まれているかがわかるため、以下のことが可能になります。

  • IDEが正しく補完する(統合を参照)
  • 静的解析でエラーを検出する

これらは両方とも、開発の品質と快適さを大幅に向上させます。

宣言された型は情報提供のためであり、Latteは現時点ではそれらをチェックしません。

型の使用を開始するにはどうすればよいですか?渡されるパラメータ、その型、そして場合によってはデフォルト値を表すテンプレートクラス、例えば CatalogTemplateParameters を作成します。

class CatalogTemplateParameters
{
	public function __construct(
		public string $langs,
		/** @var ProductEntity[] */
		public array $products,
		public Address $address,
	) {}
}

$latte->render('template.latte', new CatalogTemplateParameters(
	address: $userAddress,
	lang: $settings->getLanguage(),
	products: $entityManager->getRepository('Product')->findAll(),
));

次に、テンプレートの先頭に、クラスの完全な名前(名前空間を含む)を持つ {templateType} タグを挿入します。これにより、テンプレート内に変数 $langs$products が、対応する型とともに定義されます。ローカル変数の型は、{var}{varType}{define} タグを使用して指定できます。

その時点から、IDEは正しく補完できるようになります。

手間を省くにはどうすればよいですか?テンプレートパラメータを持つクラスや {varType} タグをできるだけ簡単に書くにはどうすればよいですか?それらを生成させましょう。そのために {templatePrint}{varPrint} という2つのタグが存在します。これらをテンプレートに配置すると、通常のレンダリングの代わりに、クラスコードの提案または {varType} タグのリストが表示されます。その後、コードをワンクリックで選択し、プロジェクトにコピーするだけです。

{templateType}

テンプレートに渡されるパラメータの型は、クラスを使用して宣言します。

{templateType MyApp\CatalogTemplateParameters}

{varType}

変数の型を宣言するにはどうすればよいですか?そのために、既存の変数には {varType} タグ、または {var} タグを使用します。

{varType Nette\Security\User $user}
{varType string $lang}

{templatePrint}

{templatePrint} タグを使用してクラスを生成させることもできます。これをテンプレートの先頭に配置すると、通常のレンダリングの代わりにクラスの提案が表示されます。その後、コードをワンクリックで選択し、プロジェクトにコピーするだけです。

{varPrint}

{varPrint} タグは、記述の手間を省きます。これをテンプレートに配置すると、通常のレンダリングの代わりに、ローカル変数用の {varType} タグの提案が表示されます。その後、コードをワンクリックで選択し、テンプレートにコピーするだけです。

{varPrint} 自体は、テンプレートパラメータではないローカル変数のみを出力します。すべての変数を出力したい場合は、{varPrint all} を使用してください。

バージョン: 3.0