Şablon Deseni: Mantığı Görünümden Ayırma
İş mantığını PHP dosyalarına taşıyın ve HTML şablonlarını temiz tutun.
Şablon Deseni: Mantığı Görünümden Ayırma, CoddyKit'te ücretsiz bir PHP Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, PHP Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. PHP Academy kursu toplamda 4 dersten oluşur.
Mantığı Görünümden Neden Ayırmalısınız
Veritabanı sorgularını, iş mantığını ve HTML'yi aynı dosyada birleştirmek şu sorunlara yol açar:
- Okunması zor, karmaşık kod
- Mantığı sınama ve yeniden kullanmada zorluk
- Doğrulama atlandığında güvenlik hataları
Çözüm: Her sorumluluğu kendi katmanında tutunuz.
Basit Şablon Kalıbı
Önce tüm PHP mantığını çalıştırınız, ardından HTML çıktısı oluşturunuz:
<?php
// --- LOGIC (top) ---
require 'config.php';
$userId = (int) ($_GET['id'] ?? 0);
$user = getUserById($userId);
if (!$user) {
http_response_code(404);
require '404.php';
exit;
}
$pageTitle = 'Profile: ' . $user['name'];
// --- VIEW (bottom) ---
require 'layout/header.php';
?>
<main>
<h1><?= htmlspecialchars($user['name']) ?></h1>
</main>
<?php require 'layout/footer.php'; ?>Denetleyici ve Görünüm Dosyalarını Ayırma
Denetleyici dosyasına ve görünüm dosyasına ayırınız:
// profile.php (controller)
<?php
require 'config.php';
$userId = (int) ($_GET['id'] ?? 0);
$user = getUserById($userId);
$posts = getPostsByUser($userId);
if (!$user) { require '404.php'; exit; }
require 'views/profile.view.php';
// views/profile.view.php (view) — only HTML and echoes
// No DB calls allowed here!Görünüm Verilerini Hazırlama
Görünüme göndermeden önce tüm verileri mantık katmanında biçimlendiriniz:
<?php
$user = getUserById($id);
$viewData = [
'userName' => htmlspecialchars($user['name']),
'avatarUrl' => $user['avatar'] ?? '/default.png',
'joinedDate' => date('F Y', strtotime($user['created_at'])),
'isAdmin' => in_array('admin', $user['roles']),
];
extract($viewData); // Makes $userName, $avatarUrl, etc.
require 'views/profile.view.php';Şablon İşlevi Kalıbı
Daha temiz bir yeniden kullanım için görünüm oluşturmayı bir işlev içine alınız:
<?php
function render(string $view, array $data = []): void {
extract($data); // Create variables from array
require __DIR__ . '/views/' . $view . '.php';
}
// Usage:
render('profile', [
'name' => $user['name'],
'email' => $user['email'],
]);Çıktıyı Arabelleğe Alan Şablon Motoru
Bir şablonu oluşturup dize olarak döndürünüz:
<?php
function renderToString(string $view, array $data = []): string {
extract($data);
ob_start();
require __DIR__ . '/views/' . $view . '.php';
return ob_get_clean();
}
$html = renderToString('email/welcome', ['name' => 'Alice']);
mail($to, 'Welcome!', $html, 'Content-Type: text/html');Şablon Motoru Ne Zaman Kullanılmalı
Basit siteler için PHP'nin yerel şablonlama özelliği yeterlidir. Şu durumlarda Twig veya Blade kullanmayı değerlendirebilirsiniz:
- Varsayılan olarak otomatik kaçışlama istiyorsanız
- Tasarımcıların PHP bilgisi olmadan şablonları düzenlemesi gerekiyorsa
- Şablon kalıtımına ve makrolara ihtiyacınız varsa
- Projenizde çok sayıda görünüm varsa ve proje büyüyorsa
Twig Örneği
Symfony tarafından kullanılan Twig, otomatik kaçışlamayla birlikte temiz bir söz dizimi sağlar:
<?php
// After: composer require twig/twig
$loader = new Twig\Loader\FilesystemLoader('/templates');
$twig = new Twig\Environment($loader, ['cache' => '/tmp/twig']);
echo $twig->render('profile.html.twig', [
'user' => $user,
'posts' => $posts,
]);
// profile.html.twig:
// <h1>{{ user.name }}</h1> -- auto-escaped by defaultMVC Dizin Yapısı
Düz PHP projeleri için en küçük MVC düzeni:
project/
controllers/
UserController.php -- handles request, calls model
models/
User.php -- database queries
views/
users/
profile.php -- display only, no logic
public/
index.php -- front controller (router)Ön Denetleyici Kalıbı
Tüm istekleri tek bir giriş noktası üzerinden yönlendiriniz:
<?php
// public/index.php (front controller)
require __DIR__ . '/../vendor/autoload.php';
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
$routes = require '../routes.php';
if (isset($routes[$uri])) {
[$controller, $action] = $routes[$uri];
(new $controller)->$action();
} else {
http_response_code(404);
require '../views/404.php';
}Tek Sorumluluk İlkesi
Her dosyanın değiştirilmesi için tek bir nedeni olmalıdır:
- Model: yalnızca veri yapısı veya sorgu mantığı değiştiğinde değişir
- Denetleyici: yalnızca istek işleme mantığı değiştiğinde değişir
- Görünüm: yalnızca kullanıcı arayüzü veya düzen değiştiğinde değişir
Bu, her parçanın bağımsız olarak sınanmasını ve bakımının yapılmasını kolaylaştırır.
Hızlı Kontrol
PHP mantığını HTML görünüm kodundan ayırmanın temel yararı nedir?
Özet: Şablon Kalıbı
Temel çıkarımlar:
- Önce tüm mantığı çalıştırınız, ardından HTML çıktısı oluşturunuz
- Denetleyici ve görünüm dosyalarına ayırınız
- extract() içeren bir render() işlevi kullanınız
- Çıktıyı arabelleğe alma, oluşturulan HTML'yi yakalar
- Daha büyük projeler için Twig/Blade kullanmayı değerlendirebilirsiniz
- Ön denetleyici, tüm istekleri işleyicilere yönlendirir
Sıkça Sorulan Sorular
“Şablon Deseni: Mantığı Görünümden Ayırma” dersi ücretsiz mi?
Evet — “Şablon Deseni: Mantığı Görünümden Ayırma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve PHP Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. PHP Academy kursu toplamda 4 dersten oluşur.
“Şablon Deseni: Mantığı Görünümden Ayırma” dersinde ne öğreneceğim?
İş mantığını PHP dosyalarına taşıyın ve HTML şablonlarını temiz tutun. PHP Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
PHP Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te PHP Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Şablon Deseni: Mantığı Görünümden Ayırma” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu PHP Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her PHP Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- PHP Etiketleri ve Gömme Söz Dizimi
- PHP Döngüleriyle Dinamik HTML
- Dosyaları Dahil Etme ve Zorunlu Kılma
- Şablon Deseni: Mantığı Görünümden Ayırma