Ben framework kullanmaya CodeIgniter ile başladım. yaklaşık bir seneyi aşkın bir süre (aşağı yukarı 13 ay), CI kullandım Birkaç proje geliştirdim. PHP'de MVC'nin ne olduğunu, nasıl işlediğini anlamak için CI iyi bir başlangıç olabilir. Zira, gayet ayrıntılı, açıklayıcı ve bol örnekli bir kılavuza sahip ki yaygın bir framework olmasında bunun payı azımsanamayacak derecededir. Performans bakımından da gayet iyi bir çatıdır, CI.
Cı cephesinden son durum nedir bilmiyorum fakat, yukarıda da bahsedildiği üzere PHP'nin yeni özelliklerinin kullanılamaması sebebiyle CI eleştirilere maruz kalıyor, sürekli olarak.
Neyse, Ceviz forumlarında sineld'in açtığı Laravel başlığını gördüm. Biraz baktım. Bugüne kadar onlarca framework'e denk geldim ama hepsine ufak çapta bir göz attıktan sonra sallayıp CI kullanmaya devam etmiştim. Fakat, Laravel'i gördüğüm an, kolay kolay değişime gitmeyen biri olarak, bu framework'e çok ısındım ve bundan sonraki projelerimde Laravel kullanmaya karar verdim. Dökümanlarını, tutorial'lerini okudukça ve ne tür özellikler, imkanlar sunduğuna baktıkça Laravel'i daha çok sevdim ve CI ile kodladığım bir projeyi, sineld Ceviz'deki konuyu açtıktan sonraki birkaç gün içinde Laravel'e taşıdım. Laravel'de kodlama yaparken çok keyif aldım. Laravel sürekli olarak kendisinden "elegant, expressive, smart" vesaire şeklinde bahsedilen bir çatı ve bu niteliklere gerçekten de sonuna kadar sahip.
Özelliklerine ve CI ile kıyaslamasına kendi açımdan bakacak olursak;
Laravel, statik fonksiyonlar kullanması sebebiyle sınıf yükleme olayını unutturuyor ki bu harika bir şey. Laravel'i indirdiğiniz an her fonksiyonu kullanıma hazır halde oluyor. $this->load->library falan gibi şeylerle uğraşmak zorunda kalmıyorsunuz. Mesela, direkt DB::table('name') ile veritabanından herhangi bir önyükleme olmaksızın verilerinizi çekebiliyorsunuz.
Şurası çok açık ki, Laravel kodlanırken ekseriyetle kullanıcıların ne gibi ihtiyaçları olacağı, en sık neleri yaptığı göz önünde bulundurulmuş ve bunlar için üretilebilecek en kolay çözümler üretilmiş.
Routes ile başlayalım:
Uzun uzadıya kodunuz yoksa direkt bir route belirleyerek controller ile uğraşmadan buraya koyup, bir sayfa oluşturabilirsiniz. Route'lerda ayrıca regex tanımlayabiliyor olmanız gibi birçok özellik de cabası.
Filter'lar ile istediğiniz sayfada (isterseniz tüm projenizin genelinde), istek gönderilirken/gönderildikten sonra istediğiniz işlemi yapabiliyorsunuz. Mesela, sadece kullanıcıların göreceği sayfalara direkt filter atayarak tek tek her sayfa için doğrulama yapmakla uğraşmıyorsunuz.
Views:
İstediğiniz şekilde, istediğiniz verilerle sayfaları gösterme, aynı template içinde belli bir kısmı belli sayfalarda gösterme, diğer sayfalarda göstermeme gibi fevkalade özelliklere sahip. Ayrıca, Blade ile çok sade ve şık görünümlü bir şekilde projenizin view dosyalarını oluşturma imkanınız mevcut. Cnotroller'larda bir kere değişkene atadıktan sonra sayfa şablonunuzu tekrar tekrar çağırmanıza gerek kalmaması bile düşünülmüş.
Form Validation / Pagination:
PHP için daha sade, kullanışlı, basit, şık ve akıllı bir form doğrulamasıdüşünülemezdi herhalde. Laravel ile form doğrulaması CI'dekinin 2 - 3 katı daha zahmetsiz ve daha kişiselleştirilebilir. Aynı biçimde sayfalama için de uzun uzadıya kütüphane yüklemeye, yapılandırma yapmaya gerek yok. Query builder'in paginate fonksiyonu ile bunu kolayca halledebiliyorsunuz.
Authentication:
Bu da çok büyük bir kolaylık. Laravel'i kullanmaya başladığınız an direkt olarak bir kullanıcı giriş sistemine de sahip oluyorsunuz ve bu da sizi belli çapta bir zahmetten kurtarıyor. Auth::check(), Auth::guest() vs. gibi fonksiyonlarla kullanıcının giriş yapıp yapmadığı kolayca tespit edilerek ona göre sayfaya istedğiniz şekilde verileri gönderebiliyorsunuz.
if (Auth::guest())
{
echo '<a href="#">Giriş</a>';
}
else
{
echo '<a href="#">Çıkış</a>'
}
Eloquent:
Laravel'in fevkalade ORM'si. Yazdığınız bir modeli sadece bu Eloquent'e extend ederek bu ORM'nin sunduğu onlarca nimetten faydalanabiliyorsunuz. Veritabanı ilişkileri (one-to-one, one-to-many gibi...) çok iyi düşünülmüş.
Şimdilik bahsedebileceklerim kısaca bunlar. Laravel ayrıca Schema builder, artisan, bundle'lar gibi daha onlarca mükemmel özelliğe sahip bir çatı. Ben CI'yı bıraktığım vakit bu tür özellikler sunmuyordu. Migration falan gibi yeni özellikleri daha sonraları dökümantasyonuna baktığımda görmüştüm.