Laravel Framework Nedir?
Taylor Otwell liderliğinde ortaya çıkmış ve sürekli geliştirilmekte olan bana kalırsa mükemmel bir php framework. Sloganı “The PHP Framework For Web Artisans” yani "Web Sanatçılarının(Zanaatkârlarının) Php Framework’ü" anlamını taşımaktadır. Taylor, Laravel’i bizlere açık kaynak kodlu olarak sunmakta ve birçok insan bu projeye katkı sağlamaktadır. OOP (Object Oriented Programming) mantığıyla dizayn edilen Laravel kullanıcılarına düzenli, temiz ve okunabilir bir kod yazma imkânı sunar. Laravel hem kendi iskeletinde hem de birçok katılımcının hazırladığı paketlerle bizlere küçük veya büyük ölçekli projelerinizde inanılmaz kolaylıklar sağlamaktadır.
Laravel’in Özellikleri
Laravel yapısı itibari ile kolay bir şekilde kod yazmanıza olanak sağlar. Laracast adındaki web sitesinde bulunan birçok eğitim sayesinde Laravel’i öğrenmenizde oldukça kolay olmaktadır. Laravel bağımlılık yöneticisi olarak Composer kullanır. Composer sayesinde projenize dahil ettiğiniz paketleri çakışma olmadan kolayca ekleyip çıkartabilirsiniz.
Laravel Eloquent ORM
Object Relational Mapping yapısında proje içinde Model sınıfları ve onlara karşılık gelen Veritabanı tabloları oluşturulur. Bu modeller sayesinde yazılması gereken uzun Veritabanı sorgularını yazmadan tablolar ile haberleşip üzerlerinde işlem yapama imkânı sunar. Eloquent yapısı sayesinde Veritabanı (PostgreSql, Mysql, MongoDB, Oracle vb.) fark etmeksizin aynı sorgularla aynı işlemleri yapmamıza olanak sağlar.
Laravel Routing
Laravel'in Routing(Yönlendirme) yapısı oldukça gelişmiştir. Laravel 5.3 versiyonu ile routes klasörünün altına web.php ve api.php olarak ayırdığı dosyalar sayesinde işlevselliği ve karışıklıkları daha da azaltmıştır. Web arayüzüne ait rotaları web.php dosyasına tanımlıyoruz. Bu dosya web middleware grubuna ait olup Session State(Oturum Durumu) ve CSRF Koruması gibi özellikleri sağlamaktadır. Diğer bir yandan api.php dosyası api middleware grubuna aittir ve stateless(Session olmayan diğer bir yapı) özelliği taşımaktadır.
Rotalar üzerinde GET, POST, PUT, PATCH, DELETE, OPTIONS, ANY gibi routing metodlarını barındırmaktadır. Rotalara parametreler ve filtreler ekleyerek Controller’a yönlendirebilir ya da direk verileri return edebilirsiniz.
Laravel Blade Templates
Template motor olarak Blade Engine kullanmaktadır. Blade Templates MVC (Model View Controller) yapısının View bloğuna karşılık gelmektedir. Html ve Php kodlarının birleştiği ve viewlerin kolay bir şekilde hazırlandığı bu yapı sayesinde html’e basmaya çalıştığınız Php kodlarını işkence çekmeden yerleştirmenize imkân sağlar.
Database: Migrations
Migrationlar veritabanı versiyon kontrol sistemi gibi çalışmaktadır. Bizlere kolay bir şekilde veritabanı şemaları oluşturup düzenleme imkânı sunar. Oluşturduğumuz migrationlar ile projemizi başkalarıyla paylaştığımızda ya da başka bir yere aktardığımızda içerisinde hazır olan şemalar sayesinde projenin ihtiyaç duyduğu tabloları kolay bir şekilde oluşturabilir ve aynı zamanda seeder yapısı sayesinde içindeki verileri de kolay bir şekilde oluşturabiliriz.
Database: Query Builder
Laravel Query Builder, veritabanı sorguları oluşturmak ve çalıştırmak için kullanışlı ve akıcı bir arayüz sağlar. Uygulamanızdaki çoğu veritabanı işlemini gerçekleştirmek için kullanılabilir ve desteklenen tüm veritabanı sistemlerinde çalışır.
Laravel sorgu oluşturucusu, uygulamanızı SQL enjeksiyon saldırılarına karşı korumak için PDO bağlantı yöntemini kullanır.
Database: Pagination
Başka frameworklerde işkence olabilecek sayfalandırma işlemi Query Builder ve Eloquent ORM ile entegre bir şekilde çalışarak bizlere çok kolay bir kullanım sunmaktadır.
Laravel Authentication
Laravel kendi içerisinde hazır authentication(Kimlik doğrulama) sistemi barındırmaktadır. Sadece tek bir kod ile authentication için rotaları ve viewleri oluşturabilirsiniz. “php artisan make:auth” komutu ile Login, Register, Logout gibi kullanıcı işlemlerini projenize kolayca dahil edebilirsiniz. Hazır auth yapısını override edip kendi istediğiniz şekle de dönüştürme imkanınız mevcut.
Unit Test
Laravel testler için kullanışlı yardımcı metotlar ile birlikte sunulmaktadır. Bu metotlar sayesinde uygulamamızı kolay ve etkili bir şekilde test etmemize olanak sağlamaktadır.
Varsayılan olarak, uygulamanızın test dizini iki dizin içerir: Feature(Özellik) ve Unit(Birim). Unit(Birim) testleri, kodunuzun çok küçük, yalıtılmış bir bölümüne odaklanan testlerdir. Aslında, çoğu birim testi muhtemelen tek bir yönteme odaklanmaktadır. Feature(Özellik) testleri, kodunuzun daha büyük bir kısmını test etmek için kullanılır. Birkaç nesnenin birbiriyle nasıl etkileşime girdiğini veya bir JSON uç noktasına tüm http isteklerini yaparak test etme imkânı sunar.
ExampleTest.php dosyası hem Feature hem de Unit test dizinlerinde mevcuttur. Yeni bir Laravel uygulaması kurduktan sonra, testlerinizi çalıştırmak için komut satırında “phpunit” komutunu çalıştırabilirsiniz.
Performans
Laravel Redis cache mekanizması ile birlikte gelmektedir. Projeye Redis kurmak için ekstra bir çaba harcamaya gerek duyulmamaktadır. Redis sayesinde projenizin hızını optimize ederek daha da süratli bir hale getirebilirsiniz.
Aynı zamanda Laravel Queues özelliği ile yapılması gereken Job(İşleri)’ları sıraya koyarak sistemin şişmesini de engelleyebilirsiniz. Laravel Horizon sayesinde bu Job’ları diğer metrikleri görüntüleyebilirsiniz.
Community (Topluluk)
Laravel’i Laravel yapan en büyük yapı taşı bence topluluktur. Oldukça geniş ve sürekli büyüyen topluluk sayesinde aradığınız her özellik mevcut paket bulmanız hiç sıkıntı olmuyor. Aynı zamanda yaşadığınız sıkıntıları ve hataları aradığınızda kolay bir şekilde çözüme ulaşma imkânı sunuyor.
Daha önce bahsettiğim gibi Laracast sitesinde yayınlanan videolar, eğitimler haricinde diğer sitelerde sorunlarınıza cevap almak hiç problem değil. Topluluk tarafından paylaşılan bilgiler ve örnekler sayesinde daha önce yazmadığınız kodları kolay bir şekilde öğrenip, yazabilirsiniz.
Özellikle framework için geliştirilen paketler cidden hayat kolaylaştırmakta. Çoğu kodu kendinizin yazmasına gerek bile kalmadan başkalarının tecrübe ve birikimlerini bu paketler ile kullanıp hem öğrenebilir hem de işlerinizi oldukça süratli bir şekilde yapma imkânı sağlar.
Laravel İçin Sunucu Gereksinimleri
Laravel Homestead sanal makinesi ile Laravel kullanmanız gereken tüm gereksinimleri size sunmaktadır. Ama Homestead kullanmıyorsanız da sıkıntı değil benim gibi ubuntu üzerine de kurulum yapabilirsiniz.
Sunucuda bulunması gereken bağımlılıklar:
- · PHP> = 7.1.3
- · OpenSSL PHP Uzantısı
- · PDO PHP Uzantısı
- · Mbstring PHP Uzantısı
- · Tokenizer PHP Uzantısı
- · XML PHP Uzantısı
- · Ctype PHP Uzantısı
- · JSON PHP Uzantısı
- · BCMath PHP Uzantısı
Laravel Kurulum
Laravel, bağımlılıklarını yönetmek için bahsettiğimiz gibi Composer'ı kullanıyor. Bu nedenle, Laravel'i kullanmadan önce, Composer'ın makinenize kurulu olması gerekiyor.
Composer Create-Project
Terminalinize Composer create-project komutunu vererek Laravel'i de yükleyebilirsiniz:
composer create-project --prefer-dist laravel/laravel blog
Komutu ile blog adında bir Laravel projesi oluşturabilirsiniz.