Laravel Proje Yapısı
Laravel projeleri belirli bir klasör yapısı izler. Bu yapıyı anlamak, framework'ü etkili kullanmak için çok önemlidir.
my-project/
├── app/ # Uygulama kodu
│ ├── Console/ # Artisan komutları
│ ├── Exceptions/ # Exception handler'lar
│ ├── Http/ # HTTP katmanı
│ │ ├── Controllers/ # Controller sınıfları
│ │ ├── Middleware/ # Middleware sınıfları
│ │ └── Requests/ # Form Request sınıfları
│ ├── Models/ # Eloquent modeller
│ └── Providers/ # Service Provider'lar
│
├── bootstrap/ # Framework bootstrap
│ ├── app.php # Application instance
│ └── cache/ # Optimizasyon cache'leri
│
├── config/ # Konfigürasyon dosyaları
│ ├── app.php # Uygulama ayarları
│ ├── auth.php # Authentication ayarları
│ ├── database.php # Veritabanı ayarları
│ └── ...
│
├── database/ # Veritabanı dosyaları
│ ├── factories/ # Model factory'leri
│ ├── migrations/ # Migration dosyaları
│ └── seeders/ # Seeder sınıfları
│
├── public/ # Web erişilebilir dosyalar
│ ├── index.php # Giriş noktası
│ ├── css/ # CSS dosyaları
│ ├── js/ # JavaScript dosyaları
│ └── storage/ # Storage symlink
│
├── resources/ # Kaynak dosyalar
│ ├── css/ # Sass/CSS kaynakları
│ ├── js/ # JavaScript kaynakları
│ └── views/ # Blade template'leri
│
├── routes/ # Route tanımları
│ ├── web.php # Web route'ları
│ ├── api.php # API route'ları
│ └── console.php # Artisan komutları
│
├── storage/ # Uygulama storage
│ ├── app/ # Uygulama dosyaları
│ ├── framework/ # Framework cache
│ └── logs/ # Log dosyaları
│
├── tests/ # Test dosyaları
│ ├── Feature/ # Feature testleri
│ └── Unit/ # Unit testleri
│
├── vendor/ # Composer paketleri
├── .env # Environment değişkenleri
├── .env.example # Environment örneği
├── artisan # Artisan CLI
├── composer.json # Composer bağımlılıkları
└── package.json # NPM bağımlılıkları
Önemli Klasörler
app/ - Uygulama Kodu
Tüm uygulama kodunuz burada bulunur. PSR-4 autoloading ile App namespace'i bu klasöre map edilir.
// app/Models/User.php
namespace App\Models;
class User extends Model
{
// ...
}
config/ - Konfigürasyon
Tüm ayarlar burada bulunur. Her dosya bir array döner:
// config/app.php
return [
'name' => env('APP_NAME', 'Laravel'),
'env' => env('APP_ENV', 'production'),
'debug' => (bool) env('APP_DEBUG', false),
'url' => env('APP_URL', 'http://localhost'),
'timezone' => 'Europe/Istanbul',
'locale' => 'tr',
// ...
];
routes/ - Route Tanımları
- web.php: Session, CSRF koruması, cookie şifreleme middleware'leri aktif
- api.php: Stateless, throttle middleware'i aktif, /api prefix'li
- console.php: Closure-based Artisan komutları
Environment Değişkenleri (.env)
.env dosyası ortam bazlı değişkenleri saklar. Asla Git'e commit etmeyin!
APP_NAME="My Laravel App"
APP_ENV=local
APP_KEY=base64:xxxxx
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=root
DB_PASSWORD=secret
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
MAIL_MAILER=smtp
MAIL_HOST=mailhog
MAIL_PORT=1025
env() Helper
// .env'den değer okuma
$appName = env('APP_NAME');
$appName = env('APP_NAME', 'Default Name'); // Default değer
// Config üzerinden okuma (önerilen)
$appName = config('app.name');
⚠️ Önemli: Production'da env() fonksiyonu config dosyaları dışında kullanılmamalıdır. config:cache çalıştırıldığında env() çalışmaz.
Config Kullanımı
// Değer okuma
$timezone = config('app.timezone');
$default = config('app.nonexistent', 'default');
// Nested değer
$driver = config('database.connections.mysql.driver');
// Runtime'da değer set etme
config(['app.timezone' => 'UTC']);
// Tüm config'i al
$allConfig = config('app');
Custom Config Dosyası
// config/services.php
return [
'stripe' => [
'key' => env('STRIPE_KEY'),
'secret' => env('STRIPE_SECRET'),
],
'openai' => [
'api_key' => env('OPENAI_API_KEY'),
'model' => env('OPENAI_MODEL', 'gpt-4'),
],
];
// Kullanım
$stripeKey = config('services.stripe.key');
Cache Komutları
# Config cache (production için)
php artisan config:cache
php artisan config:clear
# Route cache
php artisan route:cache
php artisan route:clear
# View cache
php artisan view:cache
php artisan view:clear
# Tüm cache'leri temizle
php artisan optimize:clear
Önemli Noktalar
- app/ klasörü uygulama kodunu içerir
- config/ klasörü tüm ayarları barındırır
- resources/ klasörü view ve asset dosyalarını içerir
- .env dosyası ortam değişkenlerini saklar
- config() helper ile ayarlara erişilir