-
-
Notifications
You must be signed in to change notification settings - Fork 277
Expand file tree
/
Copy pathtype-system.texy
More file actions
73 lines (50 loc) · 3.18 KB
/
type-system.texy
File metadata and controls
73 lines (50 loc) · 3.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
Tip Sistemi
***********
<div class=perex>
Tip sistemi, sağlam uygulamalar geliştirmek için anahtardır. Latte, şablonlara da tip desteği getirir. Her değişkende hangi veri veya nesne tipinin olduğunu bildiğimiz için,
- IDE doğru şekilde önerilerde bulunabilir (bkz. [entegrasyon |recipes#Düzenleyiciler ve IDE ler])
- statik analiz hataları ortaya çıkarabilir
Her ikisi de geliştirme kalitesini ve rahatlığını önemli ölçüde artırır.
</div>
.[note]
Bildirilen tipler bilgilendiricidir ve Latte şu anda bunları kontrol etmemektedir.
Tipleri kullanmaya nasıl başlanır? İletilen parametreleri, tiplerini ve muhtemelen varsayılan değerlerini temsil eden bir şablon sınıfı oluşturun, örneğin `CatalogTemplateParameters`:
```php
class CatalogTemplateParameters
{
public function __construct(
public string $lang,
/** @var ProductEntity[] */
public array $products,
public Address $address,
) {}
}
$latte->render('template.latte', new CatalogTemplateParameters(
address: $userAddress,
lang: $settings->getLanguage(),
products: $entityManager->getRepository('Product')->findAll(),
));
```
Ve ardından şablonun başına `{templateType}` etiketini sınıfın tam adıyla (ad alanı dahil) ekleyin. Bu, şablonda `$lang` ve `$products` değişkenlerinin ilgili tipleriyle birlikte bulunduğunu tanımlar. Yerel değişkenlerin tiplerini [`{var}` |tags#var default], `{varType}`, [`{define}` |template-inheritance#Tanımlar] etiketlerini kullanarak belirtebilirsiniz.
O andan itibaren IDE size doğru önerilerde bulunabilir.
İşinizi nasıl kolaylaştırırsınız? Şablon parametreleri veya `{varType}` etiketleri içeren bir sınıfı en kolay nasıl yazarsınız? Oluşturulmalarını sağlayın. Bunun için `{templatePrint}` ve `{varPrint}` etiket çifti vardır. Bunları bir şablona yerleştirirseniz, normal işleme yerine sınıfın kod önerisi veya `{varType}` etiketlerinin listesi görüntülenir. Ardından kodu tek bir tıklamayla işaretleyip projenize kopyalamanız yeterlidir.
`{templateType}`
----------------
Şablona iletilen parametrelerin tiplerini bir sınıf kullanarak bildiririz:
```latte
{templateType MyApp\CatalogTemplateParameters}
```
`{varType}`
-----------
Değişkenlerin tipleri nasıl bildirilir? Bunun için mevcut değişkenler için `{varType}` etiketleri veya [`{var}` |tags#var default] kullanılır:
```latte
{varType Nette\Security\User $user}
{varType string $lang}
```
`{templatePrint}`
-----------------
Sınıfı `{templatePrint}` etiketini kullanarak da oluşturabilirsiniz. Bunu şablonun başına yerleştirirseniz, normal işleme yerine sınıfın önerisi görüntülenir. Ardından kodu tek bir tıklamayla işaretleyip projenize kopyalamanız yeterlidir.
`{varPrint}`
------------
`{varPrint}` etiketi size yazma zamanından tasarruf ettirir. Bunu şablona yerleştirirseniz, normal işleme yerine yerel değişkenler için `{varType}` etiketlerinin önerisi görüntülenir. Ardından kodu tek bir tıklamayla işaretleyip şablona kopyalamanız yeterlidir.
`{varPrint}`'in kendisi yalnızca şablon parametreleri olmayan yerel değişkenleri yazdırır. Tüm değişkenleri yazdırmak istiyorsanız, `{varPrint all}` kullanın.