Laravel Proje Yapısı ve MVC Mimarisi

Web Doktoru - Laravel Proje Yapısı ve MVC Mimarisi

Laravel Proje Yapısı ve MVC Mimarisi

İçindekiler

Laravel Proje Yapısı ve MVC Mimarisi ile modern web uygulamaları geliştirmek için kullanılan güçlü bir PHP framework’üdür. Laravel’i etkili bir şekilde kullanabilmek için, proje yapısını ve Model-View-Controller (MVC) mimarisini anlamak büyük önem taşır. Bu makalede, Laravel’in dosya yapısını ve MVC mimarisini detaylı bir şekilde inceleyeceğiz. Bu bilgiler, Laravel projelerinizi daha düzenli ve verimli bir şekilde geliştirmenize yardımcı olacaktır.


1️⃣ Laravel Dosya Yapısı

Bir Laravel projesi oluşturduğunuzda, proje dizininde birçok klasör ve dosya oluşturulur. Bu klasörler, uygulamanın farklı bileşenlerini düzenli bir şekilde organize eder. İşte temel Laravel klasör yapısı:

proje_adi/
│-- app/
│   ├── Http/
│   │   ├── Controllers/
│   │   ├── Middleware/
│   │   ├── Requests/
│-- bootstrap/
│-- config/
│-- database/
│-- public/
│-- resources/
│-- routes/
│-- storage/
│-- tests/
│-- vendor/

Temel Klasörler ve Görevleri

  • app/: Uygulamanın temel iş mantığını içerir. Controller’lar, modeller, servisler ve diğer sınıflar burada bulunur.
    • Http/Controllers/: Uygulamanın controller’ları burada yer alır. Controller’lar, kullanıcı isteklerini işler ve uygun yanıtları döndürür.
    • Http/Middleware/: Middleware’ler, HTTP isteklerini filtrelemek veya işlemek için kullanılır. Örneğin, kullanıcı yetkilendirmesi gibi işlemler middleware’lerle yönetilir.
    • Http/Requests/: Form isteklerini doğrulamak için kullanılan sınıflar burada bulunur.
  • bootstrap/: Uygulamanın başlatma işlemlerini içerir. Özellikle app.php dosyası, uygulamanın otomatik yükleyicisini başlatır.
  • config/: Uygulamanın yapılandırma dosyalarını içerir. Veritabanı bağlantıları, e-posta ayarları, oturum yönetimi gibi ayarlar burada bulunur.
  • database/: Veritabanı migration’ları, seed’ler ve fabrika dosyaları burada yer alır. Migration’lar, veritabanı şemasını yönetmek için kullanılır.
  • public/: Uygulamanın giriş noktası olan index.php dosyası ve diğer statik dosyalar (CSS, JavaScript, resimler) burada bulunur.
  • resources/: Blade şablonları, CSS ve JavaScript dosyaları gibi frontend kaynakları burada yer alır.
    • views/: Blade şablonları burada bulunur. Blade, Laravel’in güçlü bir şablon motorudur ve HTML içeriğini dinamik olarak oluşturur.
  • routes/: Uygulamanın rotalarını içerir. Web rotaları web.php dosyasında, API rotaları ise api.php dosyasında tanımlanır.
  • storage/: Uygulamanın log’ları, önbelleklenmiş dosyalar ve yüklenen dosyalar burada saklanır.
  • tests/: Uygulamanın test dosyaları burada yer alır. Laravel, PHPUnit ile entegre çalışır ve otomatik testler yazmayı kolaylaştırır.
  • vendor/: Composer tarafından yüklenen bağımlılıklar burada bulunur. Bu klasör, Laravel’in çekirdek dosyalarını ve diğer paketleri içerir.

2️⃣ MVC Mimarisi

Laravel, Model-View-Controller (MVC) mimarisini benimser. Bu mimari, uygulamanın farklı katmanlarını birbirinden ayırarak kodun daha düzenli ve yönetilebilir olmasını sağlar. MVC mimarisinin temel bileşenleri şunlardır:

Model (app/Models/)

Model, veritabanı ile ilişkili sınıfları içerir. Veritabanı tablolarını temsil eder ve veri işleme mantığını yönetir. Örneğin, bir blog uygulamasında Post modeli, posts tablosuyla ilişkilendirilir ve veritabanı işlemlerini gerçekleştirir.

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $fillable = ['title', 'content'];
}

View (resources/views/)

View, kullanıcıya gösterilecek HTML içeriklerini içerir. Blade şablon motoru sayesinde, dinamik ve özelleştirilebilir arayüzler oluşturulabilir. Örneğin, bir blog gönderisini görüntülemek için kullanılan bir Blade şablonu:Copy

<!- - resources/views/posts/show.blade.php - - >
<h1>{{ $post->title }}</h1>
<p>{{ $post->content }}</p>

Controller (app/Http/Controllers/)

Controller, iş mantığını yönetir ve veriyi Model ile View arasında yönlendirir. Kullanıcı isteklerini işler ve uygun yanıtları döndürür. Örneğin, bir blog gönderisini görüntülemek için kullanılan bir controller metodu:

namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function show($id)
    {
        $post = Post::find($id);
        return view('posts.show', ['post' => $post]);
    }
}

Örnek Senaryo: Blog Sistemi

Bir blog sistemi düşünelim:

  • Model: Post modeli, posts tablosunu yönetir ve veritabanı işlemlerini gerçekleştirir.
  • Controller: PostController, kullanıcıdan gelen isteğe göre veriyi işler ve uygun view’i döndürür.
  • View: show.blade.php, blog gönderisinin içeriğini kullanıcıya gösterir.

Sonuç

Laravel’in dosya yapısını ve MVC mimarisini anlamak, projelerinizi daha düzenli ve verimli bir şekilde geliştirmenize yardımcı olur. Laravel, bu yapı sayesinde karmaşık uygulamaları bile kolayca yönetebilmenizi sağlar. Bir sonraki adımda, Laravel’de routing ve controller kullanımını detaylı bir şekilde inceleyerek, uygulama geliştirme sürecine daha derin bir dalış yapabilirsiniz.

Laravel, hem yeni başlayanlar hem de deneyimli geliştiriciler için mükemmel bir seçenektir. Eğer henüz Laravel ile çalışmaya başlamadıysanız, bu rehberle birlikte ilk adımlarınızı atabilir ve Laravel’in sunduğu avantajlardan yararlanmaya başlayabilirsiniz. İyi çalışmalar!

Picture of Web Doktoru
Web Doktoru
Matematikçi, Adli Bilişim Uzmanı, Bil. Yük. Müh. Full Stack Developer
İlginizi Çekebilir
Web Doktoru - Laravel’de Real-Time (Gerçek Zamanlı) Bildirimler

Laravel’de Real-Time (Gerçek Zamanlı) Bildirimler

Laravel’de Real-Time (Gerçek Zamanlı) Bildirimler Laravel, modern web uygulamalarında gerçek zamanlı bildirimler oluşturmak için güçlü araçlar sunar. WebSockets, Pusher, Laravel Echo ve Broadcasting gibi teknolojiler

Web Doktoru - Laravel’de Mail Gönderme ve Bildirimler 📩

Laravel’de Mail Gönderme ve Bildirimler 📩

Laravel’de Mail Gönderme ve Bildirimler Laravel, modern web uygulamaları geliştirirken e-posta gönderimi ve bildirim sistemleri gibi ihtiyaçları kolayca karşılamak için güçlü araçlar sunar. Bu yazıda,

Whatsapp ile mesaj göndermek için tıklayın

Telefon ile sadece 09:00 - 18:00 saatleri arası ulaşabilirsiniz.