タイプシステム
堅牢なアプリケーションを開発するためには、型システムが重要な役割を果たします。Latteはテンプレートに型サポートを導入しています。各変数がどのようなデータ型、オブジェクト型であるかを把握することで、より効率的な開発が可能になります。
- IDEが正しくオートコンプリートを行う(統合とプラグインを参照)
- 静的解析によるエラーの検出
の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}
を使用します。