Laravel 11 Temel Yapısı Detaylı Anlatım

Laravel 11, modern PHP geliştirme için en güçlü ve popüler framework'lerden biridir. MVC (Model-View-Controller) mimarisini temel alarak geliştirilmiş olan Laravel, uygulamaların hızlı ve verimli bir şekilde geliştirilmesini sağlar. Bu makalede, Laravel 11'in temel yapısını ve nasıl çalıştığını detaylı bir şekilde inceleyeceğiz.

Diğer laravel 11 dersleri için sitemizi ve youtube kanalımızı takip edin. 

Şafak Saraçoğlu YouTube | Laravel 11 Eğitim Seti

Laravel 11 Temel Yapısı Detaylı Anlatım Sistem

1. Laravel 11 Dosya Yapısı

Laravel projeleri belirli bir dosya yapısı ile gelir. Bu yapıyı anlamak, projenizi daha kolay geliştirmenizi ve yönetmenizi sağlar. Laravel’in temel klasörleri şunlardır:

  • app/: Uygulamanın ana dosyaları burada bulunur. Model, Controller, Policy ve diğer anahtar sınıflar bu klasörde yer alır.
    • Http/: Controllers, Middleware, ve Requests gibi HTTP istekleriyle ilişkili sınıfları içerir.
    • Models/: Veritabanı ile ilişkili model sınıfları burada yer alır.
  • bootstrap/: Uygulamanın başlatma dosyalarını içerir. cache klasörü, uygulamanın hızlandırılması için kullanılır.
  • config/: Uygulamanın yapılandırma dosyalarını içerir.
  • database/: Veritabanı ile ilgili migrasyon, factory, ve seed dosyaları burada bulunur.
  • public/: Uygulamanın dış dünyaya sunulan dosyaları (CSS, JS, resimler) burada yer alır. index.php dosyası, Laravel’in giriş noktasıdır.
  • resources/: Blade şablonları, dil dosyaları ve Vue.js gibi ön yüz varlıkları burada bulunur.
  • routes/: Tüm URL yönlendirmeleri burada tanımlanır. Laravel’in varsayılan olarak sunduğu web.php ve api.php dosyaları, sırasıyla web ve API rotalarını içerir.
  • storage/: Yedeklemeler, loglar ve cache dosyaları burada saklanır.
  • tests/: Birim testleri ve uygulama testleri bu klasörde bulunur.
  • vendor/: Composer aracılığıyla projeye dahil edilen bağımlılıkların yer aldığı klasördür.

2. Laravel MVC Mimarisi

Laravel, MVC (Model-View-Controller) mimarisini kullanır. Bu yapı, uygulamanın farklı sorumluluklara sahip üç ana bileşeni içerir:

Model

  • Model katmanı, veritabanı işlemlerini ve iş mantığını yönetir. Veritabanındaki her tabloya karşılık gelen bir model sınıfı bulunur.
  • Eloquent ORM (Object Relational Mapping) ile veritabanı tabloları kolayca temsil edilir ve ilişkiler yönetilir.

Örnek bir model:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
 // Bu model, veritabanındaki "posts" tablosunu temsil eder
}

View

  • View katmanı, kullanıcılara sunulan arayüzleri içerir. Laravel’de bu katman genellikle Blade şablon motoru ile yönetilir. Blade, PHP kodlarını HTML ile harmanlayarak dinamik sayfalar oluşturmamızı sağlar.

Örnek Blade dosyası (resources/views/welcome.blade.php):

<!DOCTYPE html>
<html>
<head>
 <title>Laravel 11</title>
</head>
<body>
 <h1>{{ $title }}</h1>
 <p>Bu, Laravel 11 ile oluşturulmuş bir sayfadır.</p>
</body>
</html>

Controller

  • Controller katmanı, HTTP isteklerini işler ve ilgili model ve view'lar ile etkileşime girer. Bir istek geldiğinde, Controller verileri işler ve ilgili görünüme (view) iletir.

Örnek bir Controller sınıfı:

namespace App\Http\Controllers;

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

class PostController extends Controller
{
 public function index()
 {
 // Veritabanındaki tüm post'ları al ve "posts.index" görünümüne ilet
 $posts = Post::all();
 return view('posts.index', ['posts' => $posts]);
 }
}

3. Routing (Yönlendirme)

Laravel'de yönlendirme, gelen HTTP isteklerini doğru Controller fonksiyonlarına yönlendirmek için kullanılır. routes/web.php dosyasında web tabanlı rotalar tanımlanır. API istekleri için ise routes/api.php dosyası kullanılır.

Örnek bir rota tanımı:

use App\Http\Controllers\PostController;

Route::get('/posts', [PostController::class, 'index']);

Bu rota, /posts URL'sine yapılan bir GET isteğini PostController sınıfındaki index metoduna yönlendirecektir.

4. Middleware

Middleware, bir HTTP isteği uygulamaya girmeden önce veya yanıt gönderilmeden önce belirli işlemler gerçekleştiren katmanlardır. Laravel'de kimlik doğrulama, giriş kontrolü gibi işlemler Middleware ile yapılır.

Örnek bir Middleware kullanımı:

Route::get('/dashboard', function () {
 return view('dashboard');
})->middleware('auth');

Bu rota, auth middleware'ini kullanarak sadece kimliği doğrulanmış kullanıcılara dashboard sayfasını gösterir.

5. Eloquent ORM

Laravel’in Eloquent ORM yapısı, veritabanı tablolarını nesne olarak temsil etmeyi ve ilişkileri kolayca yönetmeyi sağlar. Eloquent ile basit bir sorgu şu şekilde yapılabilir:

// Tüm kullanıcıları getir
$users = App\Models\User::all();

// ID'si 1 olan kullanıcıyı getir
$user = App\Models\User::find(1);

Eloquent aynı zamanda bir veritabanı kaydı ile diğerlerini ilişkilendirme konusunda güçlüdür. Örneğin, bir yazının yorumlarını şu şekilde alabilirsiniz:

// Yazının yorumlarını al
$post = App\Models\Post::find(1);
$comments = $post->comments;

6. Blade Şablon Motoru

Blade, Laravel’in basit ama güçlü bir şablon motorudur. Blade ile dinamik verileri sayfalarınıza kolayca ekleyebilir, koşullu ifadeler ve döngüler kullanabilirsiniz.

Örnek Blade şablonu:

<h1>{{ $title }}</h1>

@if($posts->isEmpty())
 <p>Gösterilecek yazı yok.</p>
@else
 <ul>
 @foreach($posts as $post)
 <li>{{ $post->title }}</li>
 @endforeach
 </ul>
@endif

7. Artisan CLI

Laravel’in güçlü komut satırı aracı Artisan, çeşitli geliştirme işlemlerini hızlandırır. Artisan ile kontrolörler, modeller, migrasyonlar ve daha fazlasını oluşturabilirsiniz.

Bazı yaygın Artisan komutları:

  • Projeyi yerel bir sunucuda çalıştırmak için:

php artisan serve

Yeni bir kontrolör oluşturmak için:

php artisan make:controller PostController

Yeni bir veritabanı migrasyonu oluşturmak için:

php artisan make:migration create_posts_table

8. Veritabanı Migrasyonları

Laravel’de veritabanı yapıları migration dosyaları ile yönetilir. Migrasyonlar, veritabanı tablolarının oluşturulmasını ve değiştirilmesini kolaylaştırır. Aşağıda bir migration dosyasının örneği verilmiştir:

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePostsTable extends Migration
{
 public function up()
 {
 Schema::create('posts', function (Blueprint $table) {
 $table->id();
 $table->string('title');
 $table->text('content');
 $table->timestamps();
 });
 }

 public function down()
 {
 Schema::dropIfExists('posts');
 }
}

Bu migrasyonu uygulamak için şu komut çalıştırılır:

php artisan migrate

Laravel 11 Temel Yapısı Detaylı Anlatım

Laravel 11, modern web geliştirme için güçlü bir temel sunar. MVC mimarisi, Eloquent ORM, Blade şablon motoru ve Artisan CLI gibi özellikleri ile geliştirme sürecini hızlandırır. Laravel'in sunduğu araçlar ve esnek yapı, projelerinizi daha organize ve sürdürülebilir hale getirir.

WhatsApp iletişim hattı