0Pricing
PHP Academy · Ders

Ş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 default

MVC 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

  1. PHP Etiketleri ve Gömme Söz Dizimi
  2. PHP Döngüleriyle Dinamik HTML
  3. Dosyaları Dahil Etme ve Zorunlu Kılma
  4. Şablon Deseni: Mantığı Görünümden Ayırma
← PHP Academy Sayfasına Dön