- Giriş
- Kök Dizin
app
DiziniConsole
DiziniEvents
DiziniExceptions
DiziniHttp
DiziniJobs
DiziniListeners
DiziniMail
DiziniModels
DiziniNotifications
DiziniPolicies
DiziniObservers
DiziniProviders
DiziniRules
Dizini
database
DiziniMigrations
DiziniSeeds
Dizini
resources
Dizinijs ve css dizini
DiziniViews
Dizini
Laravel, kurulduktan sonra birden fazla dizinle gelir ve bunlar, ilk bakışta göz korkutucu olabilir, ama endişelenmeyin hepsinin amacı var ve hepsi çok basit.
Yani bütün dizin/dosyalarla sürekli çalışmak gibi bir durumunuz yok, en çok app
dizini içerisinde çalışıyor olacaksınız.
Laravel, psr-4
otomatik yükleme standartını ve psr-2
yazım standartını kullanır. Eğer bunları bilmiyorsanız;
https://www.php-fig.org/psr/psr-2/
https://www.php-fig.org/psr/psr-4/
adreslerini ziyaret edin
app
dizini, uygulamanın çekirdek kodlarını içeren dizindir. Uygulama geliştirme boyunca, en çok çalışacağımız dizinlerden bir tanesi burası.
bootstrap
dizini, bootstrap'in Türkçesi önyükleme demek. Önyükleme dizini framework'ü yükleyen app.php
dosyasını bulundurur. app.php
dosyasında, Application
sınıfının bir örneğini oluşturur ve kapsayıcıya
, HttpKernel
, ConsoleKernel
ve ExceptionHandler
nesnelerini kaydeder. Eğer Http
isteği gelirse, kapsayıcıya
kaydedilmiş, HttpKernel
nesnesini çalıştırır ve istekleri işlemek için uygulamayı hazırlamaya başlar. Bir hata oluşursa, ExceptionHandler
nesnesini çalıştırır ve hata işlemini gerçekleştirir. Eğer Console
isteği gelirse, kapsayıcıya
kaydedilmiş, ConsoleKernel
nesnesini çalıştırır ve komutları işlemek için uygulamayı console
u hazırlar. Bir hata oluşursa, ExceptionHandler
nesnesini çalıştırır ve hata işlemini gerçekleştirir.
Genellikle bu dizinde değişiklik vb yapmanız istenmez.
config
dizini, uygulama yapılandırmalarını burada tutar. Yani uygulamada bir yapılandırma gerekiyorsa burdan yapılır başka bir yerden yaptırmanızı istemez. Mümkün olduğunca yapılandırmalarınızı burada yapın.
database
dizini, seed, migration ve factory dizinlerini bulundurur. Ayrıca burayı sqlite deposu olarak kullanabilirsiniz. Bu bölümün sonuna doğru alt dizinlerden bahsedilmiştir.
public
dizini, isteklerin ilk gelidiği index.php
dosyasını bulundurur. Bu dizin içerisinde herkese açık dosyalar tutulur. Örn : javascript dosyaları, css dosyaları vb.
Lang dizini, dil dosyalarını bulundurur. Uygulamanızda çoklu dil kullanmak isterseniz, buradan yönetebilirsiniz.
resources
dizini, MVC'nin V'si diyebiliriz. Burda şablonlar, derlenmemiş css ve javascript dosyalarını barındırır. Bu dizin dışarıya açık değildir ve açılması kesinlikle önerilmez !
routes
dizini, uygulama için tanımlanacak rotaları içerir yani gereken sayfa yönlendirmelerini burdan yapılır. Routes
dizini içerisinde gelen hazırda; web.php
, api.php
, console.php
ve channels.php
bulunmakta.
web.php
dosyası, RouteServiceProvider
tarafından yüklenir. web
ara katman yazılım grubuna yerleştirilidiği yolları içerir. Uygulamada Restfull api sunmuyorsa muhtemelen sadece web.php
dosyasını kullanırsınız.
api.php
dosyası, RouteServiceProvider
tarafından yüklenir. api
ara katman yazılım grubuna yerleştirilidiği yolları içerir. Adından da anlaşılacağı gibi bu dosya normal istekleri kabul etmez yani token
olmadan ve belirtilen ara katman yazılımları kullanılıyorsa istek atılamaz.
console.php
dosyası, app/Console/Kernel.php
tarafından yüklenir. Bu dosya HTTP isteklerine kapalıdır. Komut satırından tanımlayacağınız işlemleri yapar. Örn
Artisan::command('hello', function () {
echo "Hello World";
});
php artisan hello
Hello World
channels.php
dosyası, uygulamanın etkinlik ve yayın kanallarının desteklediği tüm rotaları tanımlamanıza olanak verir.
storage
dizini, logları, derlenmiş blade(laravel blade motorunu kullanıyor.) şablonları, session(oturum)ları, dosya önbellekleri framework tarafından oluşturulan diğer önbellekleri tutar.
Bu dizin, app
, framework
ve log
dizinlerine ayrılmıştır. app
dizini uygulama tarafından oluşturulan dosyaları içerir ve bu dizinde siz de dosya depolayabilirsiniz. framework
dizini, framework tarafından oluşturulan önbellek dosylarını bulundurur. logs
dizini, uygulamanın loglarını içerir.
storage/app/public
dizini, kullanıcılar tarafından yüklenen fotoğraflar vb. dosyaları tutması için kullanılabilir fakat direkt erişiminiz yok bunun için public/storage
adında dizin'e sembolik bağlantı vermeniz gerekiyor. Bunu da php artisan storage:link
komutu ile yapabilmeniz mümkün.
tests
dizini, otomatik testlerinizi içerir. Her test sınıfnın sonuna Test
eklenmelidir.
vendor
dizini, composer bağımlılıklarını içerir. Bu dizinde hiçbir şekilde değişiklik yapmamanız gerekir. Hatta hiç yapmayın. composer ile bir paket kurduğunuzda veya güncelleme yaptığınızda yaptığınız değişiklikler silinir.
Uygulamanın çoğu bu dizin altında bulunur. Bu dizin composer otomatik yükleme standartına göre yapılmışıtr. PSR-4 otomatik yükleme standartı
App
dizini, CLI, HTTP ve Servis sağlayıcıları gibi diğer dizinleri de içerir. Bazı dizinler artisan make
komutu çalışmadan oluşturlmaz örnek Mail
dizini php artisan make:mail Test
diye yazarsanız Mail
dizinin oluştuğunu göreceksiniz.
Console
dizini, kendiniz tanımlamak istediğiniz artisan komutlarını içerir. Yeni bir komut tanımlamak için php artisan make:command test
diye çalıştırırsanız Commands
dizininde test.php
adında, komut tanımlamanız için bir dosya oluşacaktır.
Exceptions
dizini, hataların işlendiği ve kaydedildiği yerdir. Burdan hataları özelleştirebilirsiniz.
Http
dizini, uygulamanın ara katman yazılımları, form istekleri ve controller'i bulundurur.
Models
dizini, uygulamanın model dosyalarını barındırır. Model dosyaları veritabanı tablolarıyla ilişkilendirir yani her model dosyası bir tabloyla eşleşir.
Providers
dizini içinde servis sağlayıcıları bulunur. Bizimde servis sağlayıcılarını
kullanabilmemiz için bu dizin ayrılmıştır. Ayrıca laravel tarafından yüklenen servis sağlayıcılarını ve bizim sonradan eklememiz gereken servis sağlayıcıları olursa bunlar config/app.php
dosyasında, Providers
dizisi içinde tanımlanır.
Events
dizini, laravel'de oluşturulan eventlerin varsayılan olarak depolandığı dizin burasıdır.
Listeners
dizini, laravel'de oluşturulan Listenerslerin varsayılan olarak depolandığı dizin burasıdır.
Policies
dizini, model bazlı kullanıcıları kısıtlamak isterseniz bunları kullanırsınız.
Jobs
dizini, uygulamanızda eğer kuyrukları kullanacaksanız, oluşan dosyalar buraya gelir.
Mail
dizini, uygulamada mail kullanımına ihtiyaç duyarsanız burayı kullanacaksınız.
Observers
dizini, model bazlı olarak uygulamanızda oluşturulan modellere observer ekleyebilirsiniz. Observer'in amacı, modelde birşey yaptığınızda tetiklenir. Bunun ayrı bir yaşam döngüsü var. Eloquent bölümünde detaylıca açıklanmıştır.
Rules
dizini, yeni form kuralı oluşturursanız burayı kullanacaksınız. Örneğin bir formda bir alanın bir kuralı varsa bunu buraya yazabilirsiniz.
Notifications
dizini, Laravel'in bildirimlerinden faydalanmak isterseniz burası kullanılır. Laravel bildirim kanallarında varsayılan olarak mail ve veritabanı bildirimlerini sunar. Fakat sms, telegram vs gibi diğer bildirim kanallarını da kullanmak isterseniz buna da izin veriyor yani bildirimlerin geçtiği yer burası.
Laravel'de oluşturulan migrations'ların varsayılan olarak depolandığı dizin burasıdır. Migrations dosyaları veritabanı tablolarını oluşturur.
Hazır kayıtlar ekleme ihtiyacınız varsa bu dizin içinden onları kullanabilirsiniz.
Bazen sahte kayıtlar oluşturarak uygulamanızı test etmek isteyebilirsiniz, işte laravel bu durumda Factory'i bize sağlıyor ve Factory dosyaları burada tutulur.
Bu dizin içinde derlenmemiş javascript ve css dosyalarının bulunduğu dizin.
Bu dizin içinde oluşturulan veya kullanılan view dosyalarının bulunduğu dizin. Laravel varsayılan olarak bu dizini kullanır.