İçeriğe geç
Muhammet Şafak
Framework & Kütüphane 2 dk okuma

Laravel 5'e geçiş: yeni dizin yapısı ve .env

Laravel 4'ten 5'e geçerken dizin yapısı, .env dosyası ve uygulama yapısındaki değişiklikleri anlattım.


Laravel 5, geçen ay stabil sürümünü yayımladı ve ilk bakışta tanıdık ama farklı geldi. Laravel 4 ile birkaç proje yapmıştım; dizin yapısı, konfigürasyon dosyaları, app/models, app/controllers — hepsi aklımda yerleşmişti. Laravel 5’i açınca “bekle, her şey yerinden oynadı mı?” hissini yaşadım.

Kısa bir araştırmadan sonra değişikliklerin aslında birbirinden bağımsız düzenlemeler olmadığını, düşünülmüş bir yeniden yapılandırma olduğunu gördüm. Bu yazıda öne çıkan değişiklikleri ve bunlara nasıl adapte olduğumu aktaracağım.

Dizin yapısındaki temel değişiklikler

Laravel 4’te uygulama kodu app/ altındaydı ve şöyle görünüyordu:

app/
  controllers/
  models/
  views/
  filters.php
  routes.php

Laravel 5’te bu yapı değişti. models/ ve controllers/ klasörleri ortadan kalktı. Bunun yerine app/ doğrudan PSR-4 autoloading kurallarına göre düzenlenecek şekilde bırakıldı.

app/
  Http/
    Controllers/
    Middleware/
    Requests/
  Providers/
  User.php

İlk bakışta dağınık görünebilir ama aslında daha esnek. Modellerinizi app/Models/ altında ya da doğrudan app/ içinde tutabilirsiniz. Framework bir klasör yapısı dayatmıyor; siz seçiyorsunuz.

routes.php ise artık app/Http/routes.php içinde. HTTP katmanıyla ilgili her şey Http/ altında toplandı — bu mantıklı bir karar.

.env dosyası ve yapılandırma yönetimi

Laravel 5’in en sevdiğim değişikliği budur. Daha önce app/config/database.php, app/config/mail.php gibi dosyalar doğrudan sunucu bilgilerini içeriyordu. Geliştirme ve üretim (production) ortamları için ayrı klasörler açıyordunuz (app/config/local/, app/config/production/).

Laravel 5 bu yaklaşımı bıraktı ve .env dosyasını benimsedi. .env, proje kökünde duran ve hassas bilgileri tutan düz metin dosyasıdır.

APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomKey

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

Bu dosya .gitignore’a eklenir; sürüm kontrolüne girmez. Her geliştiricinin kendi .env’si olur. Üretim sunucusunda da aynı değişkenler sunucu ortamına ya da .env’ye yazılır. Konfigürasyon dosyaları artık env('DB_HOST', 'localhost') gibi çağrılarla bu değerleri okur.

Bu düzenleme sayesinde veritabanı şifresi ya da API anahtarı asla git geçmişine girmez. Bence çok doğru bir adım.

Middleware yapısı

Laravel 4’te “filtre (filter)” adıyla bilinen istek öncesi/sonrası kontroller, Laravel 5’te middleware adını aldı ve app/Http/Middleware/ altına taşındı. Kavram aynı; isim ve konum değişti. PSR-7 uyumlu bir yapıya hazırlık için bu adım atılmış.

Service Provider ve uygulama başlatma

Laravel 4’te app/start/ altında global.php, artisan.php gibi başlangıç dosyaları vardı. Bunlar artık yok. Uygulamanızı başlatmak için kullanılan her şey service provider üzerinden yönetiliyor. config/app.php içindeki providers dizisine kendi sağlayıcılarınızı ekleyebiliyorsunuz.

Başlangıçta biraz yük gibi hissettirdi ama service provider yazdıkça ne kadar düzenli bir yaklaşım olduğunu gördüm.

Migration ve komut satırı

Bu kısımda büyük değişiklik yok; artisan migrate hâlâ çalışıyor. Ama artisan komutları genişledi. php artisan make:controller, php artisan make:model, php artisan make:middleware gibi komutlar doğru dizinde doğru şablonla dosya oluşturuyor. Bu küçük kolaylık zamanla çok işe yarıyor.

Geçiş ne kadar sürdü?

Mevcut bir Laravel 4 projesini tamamen taşımak yerine yeni bir Laravel 5 projesi açıp kodu parça parça taşımayı tercih ettim. Çünkü otomatik bir geçiş yolu yok; mimari değişiklikler elle uyarlanmayı gerektiriyor.

Yeni bir proje olarak başlamak daha temiz sonuç verdi. Taşıma süreci birkaç günümü aldı; ama sonunda hem daha düzenli bir kod tabanım oldu hem de .env gibi iyi alışkanlıkları öğrenmiş oldum.

Laravel 5 kırıcı bir değişiklik gibi görünüyor ilk bakışta, ama aslında daha iyi bir yöne gidiş. Birkaç gün sabır yeterli.

Etiketler: #Laravel
Paylaş:

İlgili Yazılar

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi