PHP'de şablonlar (templates), sunucuda çalışan web uygulamalarında HTML ve PHP kodlarının karışımını daha düzenli hale getirmek, kod tekrarını önlemek ve projeyi daha modüler kılmak amacıyla kullanılır. PHP 8'de şablon yapıları, bu amacı daha rahat ve etkili şekilde gerçekleştirmek için tercih edilir.
Bir template engine kullanarak veya PHP'nin kendisiyle şablonlar oluşturabilirsiniz. Bu açıklamada, PHP ile basit şablon kullanımını ve popüler şablon motorlarından olan Twig ve Blade gibi sistemlere de kısa bir giriş yapacağım.
1. PHP İle Temel Şablonlama
PHP'de bir HTML şablonu içine PHP kodu ekleyerek temel bir şablon sistemi oluşturabilirsiniz. Bu yöntem, başta küçük projeler için uygun olsa da karmaşık projelerde genellikle bir şablon motoru tercih edilir.
Örnek: Temel PHP Şablon Dosyası
<!DOCTYPE html>
<html>
<head>
<title><?php echo $sayfaBasligi; ?></title>
</head>
<body>
<h1><?php echo $baslik; ?></h1>
<p><?php echo $icerik; ?></p>
</body>
</html>
Bu örnekte, PHP değişkenleri ($sayfaBasligi
, $baslik
, $icerik
) HTML kodunun içine eklenmiştir. Bu şablonu kullanarak her sayfa için farklı bir başlık ve içerik ekleyebilirsiniz.
Şablon Kullanımı:
$sayfaBasligi = "Anasayfa";
$baslik = "Hoşgeldiniz";
$icerik = "Bu, anasayfa içeriğidir.";
include 'template.php';
Bu PHP kodu, template.php
dosyasını şablon olarak kullanır ve değişkenleri doldurur. Böylece şablon dosyası farklı sayfalar için tekrar kullanılabilir.
2. Şablon Motorları
Büyük projelerde, kodu daha düzenli ve modüler hale getirmek için genellikle bir şablon motoru kullanılır. Bu motorlar PHP ve HTML kodunu ayırmaya, daha temiz ve kolay yönetilebilir bir yapı oluşturmaya yardımcı olur. PHP 8'de popüler şablon motorları şunlardır:
a. Twig
Twig, Symfony framework'ünde kullanılan ancak diğer projelere de entegre edilebilen popüler bir şablon motorudur. PHP'deki HTML ile iç içe geçen kodları, daha temiz ve anlaşılır bir hale getirir. Twig'in temel avantajı, şablonların güvenli, hızlı ve daha az hata içerir şekilde çalışmasını sağlamasıdır.
Örnek: Twig Şablonu
<!DOCTYPE html> <html> <head> <title>{{ sayfaBasligi }}</title> </head> <body> <h1>{{ baslik }}</h1> <p>{{ icerik }}</p> </body> </html>
Bu örnekte, PHP kodu yerine Twig'in değişken sintaksı olan {{ }}
kullanılır. Bu şablon, Twig motoru tarafından işlenir ve sonuç olarak HTML çıktısı oluşturulur.
Twig Kullanımı PHP ile:
require_once '/path/to/vendor/autoload.php';
$loader = new TwigLoaderFilesystemLoader('/path/to/templates');
$twig = new TwigEnvironment($loader);
echo $twig->render('template.twig', [
'sayfaBasligi' => 'Anasayfa',
'baslik' => 'Hoşgeldiniz',
'icerik' => 'Bu, anasayfa içeriğidir.'
]);
Bu kod, Twig motorunu kullanarak template.twig
dosyasını işleyip çıktısını oluşturur.
b. Blade (Laravel)
Blade, Laravel framework'ünde kullanılan varsayılan şablon motorudur. Basit ve anlaşılır bir sintaksı vardır ve PHP kodlarını rahatça kullanmanıza olanak tanır. Blade aynı zamanda, şablonlarda "inheritance" (kalıtım) ve "section" gibi özellikler sağlar.
Örnek: Blade Şablonu
<!DOCTYPE html> <html> <head> <title>{{ $sayfaBasligi }}</title> </head> <body> <h1>{{ $baslik }}</h1> <p>{{ $icerik }}</p> </body> </html>
Blade şablonlarında PHP değişkenleri {{ }}
ile kullanılır ve Blade motoru ile işlenir.
c. Smarty
Smarty de bir başka popüler PHP şablon motorudur. PHP'den ayrı bir şablonlama dili sağlar ve hız ve güvenlik avantajları sunar.
Örnek: Smarty Şablonu
<!DOCTYPE html> <html> <head> <title>{$sayfaBasligi}</title> </head> <body> <h1>{$baslik}</h1> <p>{$icerik}</p> </body> </html>
Smarty'nin değişken sintaksı {}
ile belirlenir. Değişkenler PHP'de ayarlanır ve Smarty motoru tarafından şablon dosyası işlenir.
Smarty Kullanımı:
require('libs/Smarty.class.php');
$smarty = new Smarty;
$smarty->assign('sayfaBasligi', 'Anasayfa');
$smarty->assign('baslik', 'Hoşgeldiniz');
$smarty->assign('icerik', 'Bu, anasayfa içeriğidir.');
$smarty->display('template.tpl');
3. Şablonlarda Kalıtım (Template Inheritance)
Twig ve Blade gibi şablon motorları, şablonlarda kalıtımı destekler. Bu özellik, farklı sayfalar için tekrar eden HTML yapılarının (örneğin, başlık ve alt bilgi gibi) bir kez tanımlanmasını ve diğer şablonlarda yeniden kullanılmasını sağlar.
Twig'de Kalıtım:
base.twig:
<!DOCTYPE html> <html> <head> <title>{% block title %}Başlık{% endblock %}</title> </head> <body> <header> <h1>Site Başlığı</h1> </header> <div class="content"> {% block content %}{% endblock %} </div> <footer> <p>Site Alt Bilgisi</p> </footer> </body> </html>
anasayfa.twig:
{% extends "base.twig" %} {% block title %}Anasayfa{% endblock %} {% block content %} <p>Bu anasayfa içeriğidir.</p> {% endblock %}
Bu örnekte, anasayfa.twig
dosyası base.twig
şablonundan kalıtım alarak onun yapısını kullanır ve sadece içeriği özelleştirir.
4. PHP İçinde Şablon Motoru Kullanımı
Bir şablon motorunu kullanmak için genellikle şu adımlar izlenir:
- Kurulum: Şablon motoru projenize dahil edilir. Örneğin, Composer kullanarak Twig ya da Blade kurulabilir.
-
Şablon Dosyası Oluşturma: HTML ve şablon değişkenlerinin yer aldığı
.twig
,.blade.php
veya.tpl
dosyaları oluşturulur. - Şablonun İşlenmesi: PHP kodunda, şablon motoru çağrılır ve gerekli değişkenler ile şablon işlenir.
- Çıktı Oluşturma: Şablon motoru, dinamik olarak oluşturulan HTML'yi döndürür.
Sonuç
PHP 8'de şablonlama, uygulama projelerinde modülerlik, kodun daha okunabilir olması ve tekrar kullanılabilirliği sağlar. PHP'nin kendisiyle basit şablonlama yapılabileceği gibi, Twig, Blade ve Smarty gibi gelişmiş şablon motorları daha büyük projelerde tercih edilir. Bu motorlar, daha temiz bir yapı ve ek güvenlik avantajları sunarak projeleri ölçeklenebilir ve sürdürülebilir hale getirir.