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ı iseapi.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!
Laravel Eğitimi Konular
- Laravel Nedir ve Neden Kullanılmalı?
- Laravel Kurulumu (Composer ile Adım Adım Rehber)
- Laravel Proje Yapısı ve MVC Mimarisi
- Laravel Routing ve Controller Kullanımı
- Laravel Middleware Kullanımı
- API isteklerinde middleware kullanımı
- Laravel Migration ve Seeder Kullanımı
- Laravel Factory ve Faker ile Test Verisi Üretme
- Laravel’de API Kullanımı ve Token Bazlı Authentication
- Laravel Rol ve Yetkilendirme İşlemleri
- Laravel’de Cache ve Performans Optimizasyonu
- Laravel’de Queue (Kuyruk) Kullanımı ve Arka Plan İşlemleri
- Laravel Event & Listener Kullanımı
- Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi
- Laravel’de Test Driven Development (TDD) ve Test Yazımı