型システム
型システムは堅牢なアプリケーション開発の鍵となります。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}
を使用してください。