Latte 3.0'dan geçiş
Latte 3.1, şablonları daha güvenli ve yazması daha rahat kılan birkaç iyileştirme ve değişiklik getiriyor. Değişikliklerin çoğu geriye dönük uyumludur, ama bazıları geçiş sırasında dikkat gerektirir. Bu kılavuz, uyumluluğu bozan değişiklikleri ve onlarla nasıl başa çıkılacağını özetler.
Latte 3.1, PHP 8.2 veya daha yenisini gerektirir.
Akıllı nitelikler ve geçiş
Latte 3.1'deki en önemli değişiklik, Akıllı niteliklerin yeni davranışıdır. Bu,
null değerlerin ve data- niteliklerindeki boole değerlerin nasıl render edildiğini etkiler.
nulldeğerler: Öncedentitle={$null},title=""olarak render ediliyordu. Artık nitelik tamamen düşürülür.data-nitelikleri: Öncedendata-foo={=true}/data-foo={=false},data-foo="1"/data-foo=""olarak render ediliyordu. Artıkdata-foo="true"/data-foo="false"olarak render edilir.
Uygulamanızda çıktının değiştiği yerleri belirlemenize yardımcı olmak için Latte bir geçiş aracı sunar.
Geçiş uyarıları
Geçiş uyarılarını etkinleştirebilirsiniz; render sırasında çıktı Latte 3.0'dakinden farklıysa sizi uyarırlar.
$latte = new Latte\Engine;
$latte->setFeature(Latte\Feature::MigrationWarnings);
Etkinleştirildiğinde, uygulamanızın günlüklerini veya Tracy çubuğunu E_USER_WARNING için denetleyin. Her
uyarı, şablondaki belirli satır ve sütunu gösterir.
Uyarılar nasıl giderilir:
Yeni davranış doğruysa (örneğin boş niteliğin kaybolmasını istiyorsanız), uyarıyı bastırmak için
|accept filtresiyle onaylayın:
<div title={$var|accept}></div>
Niteliği düşürmek yerine boş tutmak istiyorsanız (örneğin title=""), null birleştirme operatörünü
kullanın:
<div title={$var ?? ''}></div>
Ya da kesinlikle eski davranışı istiyorsanız (örneğin true için "1"), değeri açıkça dizeye
dönüştürün:
<div data-foo={(string) $bool}></div>
Tüm uyarıları giderdikten sonra:
Tüm uyarılar giderildiğinde geçiş uyarılarını kapatın ve artık gerekmediklerinden şablonlarınızdaki tüm
|accept filtrelerini kaldırın.
Katı tipler
Latte 3.1, derlenen tüm şablonlar için varsayılan olarak declare(strict_types=1) etkinleştirir. Bu tip
güvenliğini artırır, ama gevşek tiplemeye güveniyorduysanız şablonlarınızdaki PHP ifadelerinde tip hatalarına yol
açabilir.
Tipleri hemen düzeltemiyorsanız bu davranışı kapatabilirsiniz:
$latte->setFeature(Latte\Feature::StrictTypes, false);
Genel sabitler
Şablon ayrıştırıcısı, basit dizeler ile sabitleri daha iyi ayırt edecek şekilde iyileştirildi. Sonuç olarak genel
sabitlerin önüne artık ters eğik çizgi \ konmalıdır.
{* Eski yol (uyarı fırlatır; ileride 'PHP_VERSION' dizesi olarak yorumlanacak) *}
{if PHP_VERSION > ...}
{* Yeni yol (doğru biçimde sabit olarak yorumlanır) *}
{if \PHP_VERSION > ...}
Bu değişiklik belirsizliği önler ve tırnaksız dizeleri daha serbest kullanmanıza olanak tanır.
Kaldırılan ve kullanımdan kaldırılan özellikler
Ayrılmış değişkenler: $__ (çift alt çizgi) ile başlayan değişkenler ve $this
değişkeni Latte'nin iç kullanımına ayrılmıştır. Varsayılan olarak onları kullanmak hâlâ çalışır ama bir
kullanımdan kaldırma uyarısı tetikler; yalnızca katı ayrıştırma etkinken derleme hatası fırlatır. İç değişkenler
$ʟ_… ve $GLOBALS her zaman yasaktır.
Undefined-safe operatörü: PHP 8'den önce yaratılmış, Latte'ye özgü bir özellik olan ??->
operatörü kaldırıldı. Tarihsel bir kalıntıdır. Lütfen standart PHP nullsafe operatörünü ?->
kullanın.
Filter loader Engine::addFilterLoader() metodu kullanımdan kaldırıldı ve silindi. Latte'nin başka
hiçbir yerinde bulunmayan tutarsız bir kavramdı.
Tarih formatı Genel durumdan kaçınmak için Latte\Runtime\Filters::$dateFormat statik özelliği
kaldırıldı.
Yeni özellikler
Geçiş yaparken yeni özelliklerin tadını çıkarmaya başlayabilirsiniz:
- Akıllı HTML nitelikleri:
classvestyle'a dizi verin,nullnitelikleri otomatik düşürün. - Nullsafe filtreler: null değerlerin filtrelenmesini atlamak için
{$var?|filter}kullanın. n:elseif: Artıkn:ifven:elseyanından:elseifde kullanabilirsiniz.- Basitleştirilmiş sözdizimi:
<div n:if={$cond}>yazımını tırnaksız kullanın. - Toggle filtresi: Boole nitelikleri üzerinde elle denetim için
|togglekullanın.