Ulaşım
- Adres:Batıkent Mh. 8910 Sk. 6. Etap 1H No: 18 Yeni Toki Eyyübiye / Şanlıurfa (Yeni Alım Satım Karşısı)
- Telefon:0 (545) 528 88 93
- eMail: info@alestaweb.com
PHP'nin en popüler framework'ü yeni versiyonuyla karşınızda! Laravel 12, Şubat 2025'te yayınlandı ve 2026'da projelerinizi güçlendirmeye hazır. Yeni starter kit'ler, WorkOS AuthKit entegrasyonu, PostgreSQL 18 desteği ve daha fazlası. Alesta Web olarak bu kapsamlı rehberde (comprehensive guide) tüm yenilikleri ve upgrade adımlarını anlatıyoruz!
Laravel 12, "maintenance release" olarak nitelendiriliyor. Yani radikal değişiklikler yerine, mevcut özelliklerin iyileştirilmesi ve bağımlılıkların güncellenmesi odağında. Çoğu Laravel uygulaması kod değişikliği gerektirmeden Laravel 12'ye yükseltilebilir!
Laravel 12, 24 Şubat 2025'te yayınlandı (released February 24, 2025). Bug fix desteği 2026 boyunca, güvenlik güncellemeleri 2027'ye kadar devam edecek. Alesta Web olarak yeni projelerde Laravel 12 kullanmanızı öneriyoruz.
| Özellik / Feature | Laravel 11 | Laravel 12 |
|---|---|---|
| PHP Minimum | 8.2 | 8.2 (8.5 önerilir) |
| Carbon Version | Carbon 2/3 | Sadece Carbon 3 |
| Starter Kits | Breeze, Jetstream | + WorkOS AuthKit |
| Queue Failover | Manuel | Otomatik |
| Bug Fix Desteği | 2025 | 2026 |
Laravel 12 ile birlikte starter kit'ler tamamen yenilendi. Alesta Web olarak yeni kit'leri inceledik ve çok beğendik!
# Yeni Laravel projesi oluştur laravel new my-app # React starter kit seç # Kurulum sırasında seçenekler sunulacak: # - React (Inertia.js) # - Vue (Inertia.js) # - Livewire # - API Only # React seçildiğinde şunlar dahil: # - Inertia.js # - React 19 # - TypeScript # - Tailwind CSS # - shadcn/ui components
Vue Starter Kit şunları içerir: ├── Inertia.js (SPA deneyimi) ├── Vue 3.6 (Composition API) ├── TypeScript (type safety) ├── Tailwind CSS 4.0 ├── shadcn-vue components └── Vite (super fast HMR) # Kurulum: laravel new my-vue-app --stack=vue # Veya interaktif kurulum: laravel new my-vue-app # Sonra Vue seçin
# Livewire için: laravel new my-livewire-app --stack=livewire # Livewire 3 ile gelir: # - Full-page components # - Alpine.js entegrasyonu # - Tailwind CSS # - Volt syntax (opsiyonel)
Yeni projeler için React veya Vue starter kit'leri öneriyoruz. Inertia.js ile SPA deneyimi, Laravel'in güçlü backend'i ile birleşiyor. alestaweb.com projelerinde Vue stack kullanıyoruz.
Laravel 12'nin en ilginç yeniliklerinden biri WorkOS AuthKit entegrasyonu. Passkeys, SSO ve social login artık çok kolay!
WorkOS AuthKit, enterprise-grade authentication çözümüdür. Laravel 12 ile birlikte starter kit'lerin bir parçası olarak sunuluyor.
# Starter kit kurulumunda WorkOS seçeneğini işaretleyin laravel new my-app # Kurulum sihirbazında: # ? Would you like to install WorkOS AuthKit? (yes/no) # > yes # .env dosyasına WorkOS credentials ekleyin: WORKOS_CLIENT_ID=your_client_id WORKOS_API_KEY=your_api_key WORKOS_REDIRECT_URI=https://your-app.com/callback # Routes otomatik olarak eklenir: # /login - Login sayfası # /login/sso - SSO redirect # /callback - OAuth callback
<?php
// routes/web.php - Otomatik olarak eklenir
use WorkOS\AuthKit\Facades\AuthKit;
// Passkey registration
Route::post('/passkeys/register', function (Request $request) {
$passkey = AuthKit::registerPasskey($request->user());
return response()->json($passkey);
});
// Passkey authentication
Route::post('/passkeys/authenticate', function (Request $request) {
$user = AuthKit::authenticateWithPasskey($request->credential);
Auth::login($user);
return redirect('/dashboard');
});
WorkOS AuthKit, küçük projeler için ücretsiz tier sunuyor. Enterprise özellikler (SSO, MFA) için ücretli plan gerekiyor. Alesta Web olarak küçük-orta projeler için Laravel Breeze'i hala öneriyoruz.
Laravel 12'de gelen diğer önemli yenilikler. Alesta Web ekibinin favorileri:
<?php
// config/queue.php
'connections' => [
'failover' => [
'driver' => 'failover',
'connections' => [
'redis', // Önce Redis'e dene
'database', // Redis başarısız olursa database'e geç
'sync', // Son çare: sync driver
],
],
],
// Kullanım:
// Artık Redis down olduğunda job'lar otomatik olarak
// database queue'ya yönlendirilir. High availability!
dispatch(new ProcessOrder($order))->onConnection('failover');
<?php use Illuminate\Support\Arr; $array = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 2]; // Sadece belirli değerleri içeren elemanları al $result = Arr::onlyValues($array, [1, 2]); // ['a' => 1, 'b' => 2, 'd' => 2] // Belirli değerleri HARİÇ tut $result = Arr::exceptValues($array, [2]); // ['a' => 1, 'c' => 3] // Collection'da da kullanılabilir: collect($array)->onlyValues([1, 2]);
<?php
$collection = collect(['apple', 'banana', 'cherry']);
// Birden fazla item kontrolü
$result = $collection->containsManyItems(['apple', 'banana']);
// true - Her ikisi de mevcut
$result = $collection->containsManyItems(['apple', 'mango']);
// false - mango yok
// Eski yöntem (Old way):
$hasAll = $collection->contains('apple') && $collection->contains('banana');
// Yeni yöntem (New way) - Daha temiz!
$hasAll = $collection->containsManyItems(['apple', 'banana']);
<?php
// Enum tanımla
enum Permission: string
{
case ViewDashboard = 'view-dashboard';
case ManageUsers = 'manage-users';
case DeletePosts = 'delete-posts';
}
// Gate tanımla
Gate::define(Permission::ViewDashboard, function (User $user) {
return $user->hasRole('admin');
});
Gate::define(Permission::ManageUsers, function (User $user) {
return $user->hasPermission(Permission::ManageUsers);
});
// Kullanım:
if (Gate::allows(Permission::ViewDashboard)) {
// Dashboard'a eriş
}
// Policy'de:
$this->authorize(Permission::DeletePosts, $post);
<?php
class Post extends Model
{
// Eski davranış - Unicode escape edilir:
protected $casts = [
'metadata' => 'json',
];
// {"title": "\u00d6zel Karakterler"} - Okunması zor!
// Yeni davranış - Unicode korunur:
protected $casts = [
'metadata' => 'json:unicode',
];
// {"title": "Özel Karakterler"} - Okunabilir!
}
// Türkçe karakterler artık düzgün görünüyor
// Turkish characters now display correctly
// Alesta Web olarak bu özelliği çok beğendik!
Laravel 12'ye yükseltmeden önce bilmeniz gereken kritik değişiklikler:
// ❌ Artık desteklenmiyor: "nesbot/carbon": "^2.0" // ✅ Carbon 3 gerekli: "nesbot/carbon": "^3.0" // Carbon 3 farklılıkları: // - Daha katı typing // - Bazı deprecated metodlar kaldırıldı // - Immutable by default seçeneği // Kontrol edin: composer show nesbot/carbon
// Laravel 12 için:
// - PHP 8.2 minimum
// - PHP 8.5 önerilir (recommended)
// composer.json kontrolü:
{
"require": {
"php": "^8.2"
}
}
// PHP versiyonunuzu kontrol edin:
php -v
// Laravel 12 ile güncellenen paketler: // Sanctum "laravel/sanctum": "^4.0" // Eskiden ^3.0 // Passport "laravel/passport": "^12.0" // Eskiden ^11.0 // Telescope "laravel/telescope": "^5.0" // Eskiden ^4.0 // Horizon "laravel/horizon": "^6.0" // Eskiden ^5.0 // composer update ile güncelleyin
Laravel 11'den Laravel 12'ye nasıl yükseltirsiniz? Alesta Web ekibinin adım adım rehberi:
// composer.json güncellemeleri:
{
"require": {
"php": "^8.2",
"laravel/framework": "^12.0",
"nesbot/carbon": "^3.0"
}
}
// Güncelleme komutları:
composer update
// Eğer conflict olursa:
composer update --with-all-dependencies
# Yeni config değişikliklerini al php artisan vendor:publish --tag=laravel-config # Veya manuel karşılaştırma: # https://github.com/laravel/laravel/compare/11.x...12.x # Önemli config değişiklikleri: # - config/queue.php: failover driver eklendi # - config/auth.php: WorkOS seçenekleri eklendi
<?php // Carbon 2'den Carbon 3'e geçiş kontrolleri: // ❌ Deprecated metodlar (kaldırılmış olabilir): $date->diffForHumans(['parts' => 2]); // ✅ Yeni syntax: $date->diffForHumans(parts: 2); // Named arguments kullanımı önerilir // Carbon 3 strict types kullanır
# Tüm testleri çalıştır php artisan test # Veya PHPUnit ile: ./vendor/bin/phpunit # Static analysis: ./vendor/bin/phpstan analyse # Eğer tüm testler geçerse: git add . git commit -m "Upgrade to Laravel 12" # Staging'e deploy et, test et, sonra production
Upgrade öncesi mutlaka veritabanı yedeği alın ve staging ortamında test edin. Laravel 12 geriye uyumlu olsa da Carbon 3 geçişi dikkat gerektirir. alestaweb.com'da her zaman bu protokolü uyguluyoruz.
Laravel 12'ye geçişte karşılaşabileceğiniz yaygın hatalar:
// Hata Mesajı (Error Message): Class 'Carbon\Carbon' not found // veya Declaration of Carbon\Carbon::method() must be compatible // Çözüm (Solution): composer remove nesbot/carbon composer require nesbot/carbon:^3.0 // Cache temizle: php artisan config:clear php artisan cache:clear composer dump-autoload
// Hata Mesajı (Error Message): Package spatie/laravel-permission requires laravel/framework ^10.0|^11.0 // Çözüm (Solution): // Paketi en son sürüme güncelle composer update spatie/laravel-permission // Eğer güncelleme yoksa, geçici olarak: composer require spatie/laravel-permission --with-all-dependencies // Veya paket maintainer'a issue açın
// Hata Mesajı (Error Message):
InvalidArgumentException: Queue connection [failover] is not defined
// Çözüm (Solution):
// config/queue.php'ye failover connection ekleyin:
'connections' => [
'failover' => [
'driver' => 'failover',
'connections' => [
'redis',
'database',
],
],
// Diğer connections...
],
// Config cache temizle:
php artisan config:clear
Her zaman composer.lock dosyasını version control'e dahil edin. Bu, tüm ekip üyelerinin aynı paket versiyonlarını kullanmasını sağlar.
Bu makalede kullanılan bilgiler aşağıdaki resmi kaynaklardan derlenmiştir (information compiled from official sources):
Alesta Web olarak tüm bilgileri test ettik ve doğruladık (we tested and verified all information).
Laravel 12 ile PHP geliştirme deneyiminiz daha da güçleniyor. Alesta Web olarak yeni projelerinizde Laravel 12 kullanmanızı ve mevcut projeleri yükseltmenizi öneriyoruz.
Hızlı Özet / Quick Summary:
Faydalı Linkler / Useful Links:
© 2026 AlestaWeb - Tüm hakları saklıdır. Bu Laravel rehberi Alesta Web ekibi tarafından hazırlanmıştır.