Php 8 Layouts

Php 8 Layouts

PHP 8'de layouts (düzenler), genellikle MVC (Model-View-Controller) yapısında web uygulamaları geliştirirken kullanılan bir kavramdır. Layouts, uygulamanın genel tasarımını (header, footer, menü gibi tekrar eden kısımlar) şablon dosyalarına ayırarak merkezi bir yerden yönetilmesini sağlar. Böylece sayfalar arasındaki tutarlılık korunur ve kodun tekrar yazılmasının önüne geçilir.

Layout kullanımı, genellikle PHP'deki include ve require fonksiyonlarıyla manuel olarak yapılabileceği gibi, Blade, Twig gibi şablon motorlarıyla daha yapılandırılmış ve güçlü hale getirilebilir.

1. PHP ile Temel Layout Kullanımı

Basit bir PHP yapısında layoutlar, genellikle include veya require fonksiyonlarıyla sayfaların ortak parçalarını (örneğin header, footer) içerir.

Örnek: PHP ile Basit Layout Kullanımı

header.php (Başlık ve menü için):

<!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title><?php echo $sayfaBasligi; ?></title> </head> <body> <header> <h1>Web Sitem</h1> <nav> <ul> <li><a target="_blank" href="index.php">Anasayfa</a></li> <li><a target="_blank" href="hakkimizda.php">Hakkımızda</a></li> <li><a target="_blank" href="iletisim.php">İletişim</a></li> </ul> </nav> </header>

footer.php (Alt bilgi için):

<footer> <p>&copy; 2024 Web Sitem. Tüm Hakları Saklıdır.</p> </footer> </body> </html>

index.php (Ana sayfa):

<?php $sayfaBasligi = "Anasayfa"; include 'header.php'; // Header ve menü kısmını ekliyoruz ?> <main> <h2>Hoş Geldiniz!</h2> <p>Bu anasayfanın içeriğidir.</p> </main> <?php include 'footer.php'; // Footer kısmını ekliyoruz ?>

Bu yapıda:

  • header.php ve footer.php dosyaları site genelinde tekrar kullanılabilecek kısımları içerir.
  • index.php gibi sayfalar bu kısımları include komutuyla çağırarak site genelinde ortak yapılar kullanır.
  • Değişiklik yapmak istediğinizde sadece header.php veya footer.php dosyalarını düzenlemek yeterlidir. Bu sayede tüm sayfalara yansıyan bir değişiklik yapmış olursunuz.

2. Gelişmiş Layout Yapısı

Büyük uygulamalarda, sayfa düzenini yönetmek ve her sayfada aynı kodları tekrar etmemek için bir ana layout şablonu oluşturmak yaygın bir yaklaşımdır. Bu şablon, her sayfanın genel yapısını içerir ve sayfanın içerik kısmı dinamik olarak eklenir.

Örnek: PHP ile Ana Layout Şablonu

layout.php (Ana şablon):

<!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title><?php echo $sayfaBasligi ?? "Web Sitem"; ?></title> </head> <body> <header> <h1>Web Sitem</h1> <nav> <ul> <li><a target="_blank" href="index.php">Anasayfa</a></li> <li><a target="_blank" href="hakkimizda.php">Hakkımızda</a></li> <li><a target="_blank" href="iletisim.php">İletişim</a></li> </ul> </nav> </header> <main> <?php echo $sayfaIcerigi; // Sayfanın içerik kısmı ?> </main> <footer> <p>&copy; 2024 Web Sitem. Tüm Hakları Saklıdır.</p> </footer> </body> </html>

index.php (İçeriğin dahil edilmesi):

<?php $sayfaBasligi = "Anasayfa"; $sayfaIcerigi = "<h2>Hoş Geldiniz!</h2><p>Bu, anasayfanın içeriğidir.</p>"; include 'layout.php'; // Ana layout şablonunu çağırıyoruz ?>

Bu yapıda:

  • layout.php ana şablon tüm sayfalar için genel yapıyı belirler. Başlık, navigasyon menüsü ve footer gibi sabit kısımlar burada tanımlanır.
  • index.php gibi sayfa dosyaları sadece dinamik içerik sağlar ve layout dosyasına içerik aktarır.
  • Bu sayede, her sayfada tekrar eden HTML yapısından kurtulmuş oluruz ve sayfalar daha modüler bir şekilde düzenlenmiş olur.

3. Şablon Motorlarıyla Layout Kullanımı (Blade, Twig)

PHP’de yaygın olarak kullanılan framework'lerde (örneğin Laravel ve Symfony), layout yapıları şablon motorlarıyla daha gelişmiş bir şekilde yönetilir. Laravel'de Blade, Symfony'de Twig gibi şablon motorları layout kullanımını çok daha kolay hale getirir.

Blade ile Layout (Laravel)

Blade şablon motoru, @extends ve @yield komutları ile layout kullanmanızı sağlar.

layout.blade.php (Ana layout):

<!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>@yield('title', 'Web Sitem')</title> </head> <body> <header> <h1>Web Sitem</h1> <nav> <ul> <li><a target="_blank" href="/">Anasayfa</a></li> <li><a target="_blank" href="/hakkimizda">Hakkımızda</a></li> <li><a target="_blank" href="/iletisim">İletişim</a></li> </ul> </nav> </header> <main> @yield('content') </main> <footer> <p>&copy; 2024 Web Sitem. Tüm Hakları Saklıdır.</p> </footer> </body> </html>

anasayfa.blade.php (İçerik sayfası):

@extends('layout') @section('title', 'Anasayfa') @section('content') <h2>Hoş Geldiniz!</h2> <p>Bu, anasayfa içeriğidir.</p> @endsection

Bu yapıda:

  • @extends ile layout.blade.php dosyasına bağlanılır.
  • @yield komutları, alt sayfaların (örneğin anasayfa.blade.php) içeriklerini yerleştirebileceği yerleri tanımlar.
  • Bu sayede her sayfa için ortak bir layout yapısı korunur ve sadece dinamik içerik her sayfaya özgü olarak eklenir.

Twig ile Layout (Symfony)

Twig şablon motoru da benzer şekilde block ve extends yapılarıyla layout kullanmayı sağlar.

layout.twig (Ana layout):

<!DOCTYPE html> <html lang="tr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>{% block title %}Web Sitem{% endblock %}</title> </head> <body> <header> <h1>Web Sitem</h1> <nav> <ul> <li><a target="_blank" href="/">Anasayfa</a></li> <li><a target="_blank" href="/hakkimizda">Hakkımızda</a></li> <li><a target="_blank" href="/iletisim">İletişim</a></li> </ul> </nav> </header> <main> {% block content %}{% endblock %} </main> <footer> <p>&copy; 2024 Web Sitem. Tüm Hakları Saklıdır.</p> </footer> </body> </html>

anasayfa.twig (İçerik sayfası):

{% extends "layout.twig" %} {% block title %}Anasayfa{% endblock %} {% block content %} <h2>Hoş Geldiniz!</h2> <p>Bu, anasayfa içeriğidir.</p> {% endblock %}

4. Layout Kullanmanın Avantajları

  • Kod Tekrarını Azaltma: Layoutlar, tüm sayfalarda tekrar eden HTML/PHP


Yorum Ekle

Üzerine gel