タイプシステム

堅牢なアプリケーションを開発するためには、型システムが重要な役割を果たします。Latteはテンプレートに型サポートを導入しています。各変数がどのようなデータ型、オブジェクト型であるかを把握することで、より効率的な開発が可能になります。

の2点が、開発の質と利便性を大きく向上させます。

申告型は情報提供であり、ラテは現時点ではチェックしていない。

型はどのように使うのでしょうか?渡されたパラメータを表すテンプレートクラス,例えば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} というタグはまさにそれを実現するものです。 これらのタグをテンプレートに配置すると、通常のレンダリングではなく、クラスやテンプレートのコードが表示されます。そして、そのコードを選択し、プロジェクトにコピーするだけです。

{templateType}

テンプレートに渡されるパラメータの種類は、class.Template.Template()を使って宣言します。

{templateType MyApp\CatalogTemplateParameters}

{varType}

変数の型はどのように宣言するのですか?そのためには、既存の変数に対して、{varType} というタグを使うか、あるいは {var}:

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

{templatePrint}

このクラスは、{templatePrint} タグを使用して生成することもできます。これをテンプレートの先頭に配置すると、通常のテンプレートではなく、クラスのコードが表示されます。あとは、そのコードを選択し、プロジェクトにコピーするだけです。

{varPrint}

{varPrint} タグは、あなたの時間を節約してくれます。テンプレートに配置すると、通常のレンダリングではなく、{varType} タグのリストが表示されます。あとは、コードを選択して、テンプレートにコピーするだけです。

{varPrint} は、テンプレートのパラメーターでないローカル変数をリストアップします。すべての変数をリストアップしたい場合は、{varPrint all} を使用します。

version: 3.0