"CodeIngiter, inanılmaz PHP programları yazmanıza yardımcı olan açık kaynaklı bir web uygulama çatısıdır."
Evet gördüğünüz gibi iddialı bir sloganla karşıya çıkan CodeIgniter (fanları CI diye hitap eder), frameworklere yeni başlayanlar için en hızlı ve yumuşak geçişi sağlayacak PHP uygulama çatılarından birisidir. EllisLab tarafından geliştirilmektedir. ExpressionEngine adındaki çok popüler bir içerik yönetim sisteminin gelişimine paralel olarak geliştirilmeye devam etmektedir.
Editörün Notu:Bu bölümü hazırlarken kısa bir giriş yapıp ağırlıklı olarak çok temiz hazırlanmış CodeIgniter Kullanım Klavuzundan yararlanacağım. Aşağıda gördüğünüz kısmındaki içeriklerin çoğunu CodeIgniter Türkiye Grubu'nun kurucusu Fatih BAZMAN'ın hazırladığı Türkçe CodeIgniter Kullanma Klavuzundan aldım. Kendisine teşekkürü borç bilirim.
CodeIgniter, PHP kullanarak kod yazan kişiler için geliştirilmiş bir Uygulama Geliştirme Çatısıdır. Yazdığınız kodların optimize edilerek hızlı, geliştirilmiş kütüphaneler yardımıyla basit arayüzler ve mantıksal yapı içinde çalışmasını sağlamayı amaç edinir. CodeIgniter, sadece projeniz için geliştireceğiniz kodlar üzerinde odaklanmanızı sağlar.
Eğer aşağıdakilerden biriyseniz, CodeIgniter sizin için doğru bir seçimdir:
Kullanıcı deneyimleri ya da nasıl akıllıca ya da öngörüyle tasarlandığı hakkında bir şey demeden, sadece özellikler hakkında konuşmak bir uygulamayı özelliklerine göre yargılamanın kötü yoludur. Özellikler, kodun kalitesini, performansını, detaylara dikkat edilip edilmediği ya da güvenlik uygulamaları hakkında hiçbir şey ortaya çıkarmaz. Bir uygulamayı gerçekten yargılamanın tek yolu kodlarını almak ve denemektir. Kurulum CodeIgniter için çocuk oyuncağıdır bu nedenle CodeIngiter geliştiricileri sizlerin denemenizi istiyorlar. Bu arada CodeIgniter'ın ana özellikleri listesi şöyledir.
Aşağıdaki çizim sistemdeki data akışını göstermektedir:

CodeIgniter geliştiricilerinin amacı küçük ve mümkün olduğunca hafif bir paket içinde maksimum performans, yetenek ve elastikliktir.
Bu amacı karşılamak için, kendilerini kıyaslamaya, yeniden düzenlemeye ve geliştirme prosesinin her adımında basitleştirmeye, amaçlarından uzaklaştıran herşeyi bırakmaya adadılar.
Teknik ve mimari bakış açılarından, CodeIgniter ile aşağıdaki amaçları yarattılar:
CodeIgniter dinamik kurulumlu, bileşen tekilliğiyle gevşek bağlantılı bir sistemdir. Küçük bir dağıtım paketinde basitlik, elastiklik ve yüksek performans sağlama çabasındadır.
Bu bölümde CodeIgniter'in yalın, temiz ve oldukça anlaşılır bir dille hazırlanan Kullanım Klavuzunu genel hatlarıyla inceleyeceğiz. Bildiğim hatırladım kadarıyla size adım adım neyin ne işe yaradığını anlatmaya çalışacağım. Eğer düzenlediğimiz seminere katılmamış ve bu makaleyi sadece okuyorsanız, konuyu özetlediğim seminer videosunu izleyebilirsiniz.
Bu gün CodeIgniter hakkettiği üne kavuşarak, dünyada bir çok geliştiricinin tercihi olmuştur. Böyle bir sistemi geliştirenler de her geçen gün ihtiyaçları artan geliştiricilere daha iyi hizmet sunabilmek ve uygulama çatılarının rekabetlerinden ötürü kendileririni sürekli yenilemektedirler.
CodeIgniter'in ExpressionEngine CMS ile paralel olarak geliştirildiğini söylemiştik. EllisLab tarafından geliştirilen bu ürünün 2.0 versiyonu ile birlikte CodeIgniter'in de 2.0 versiyonunun yolda olduğu uzun zaman önce duyuruldu. CodeIgniter 1.7.x sürümünden 2.0 sürümüne major bir değişiklikle atlamaya hazırlanıyor. Peki bu yeni versiyon beraberinde neleri getirecektir ?
PHP'nin ruhu ve sanatından esinlenen Zend Framework'ün temelinde, basitlik, nesne yönelimli prensiplerin en iyi uygulamaları, şirket dostu lisanslama ve çok ayrıntılı test edilmiş çevik kod alt yapısı barınmaktadır.
Zend Framework, diğer uygulama çatılarının aksine size hazır bir iskelet, ve bir takım kalıplaşmış kurallar sunmaz. ZF, PEAR'ı andıran ve birbirinden tamamen bağımsız çalışabilecek şekilde tasarlanmış bir dizi kütüphane ile gelir. Siz geliştireceğiniz uygulamanıza göre bu sınıflardan işinize yarayanları alır kullanırsınız. Bu bakımdan biz tembel geliştiricilere ilk etapta çok hızlı bir uygulama çatısı sunamasa da aslında, bu ilk aşamayı atladığınızda ne kadar güçlü bir mimariye sahip olduğunu farkedersiniz.
Zend Framework, Bootsraping denilen bir kavramla hayatımıza girer. Bootstrap (önyükleyici), eğer Zend_Application kullanarak bir uygulama oluşturuyorsanız, uygulamanızın temellerini oluşturacak ZF sınıflarını sisteme dahil etmenizi sağlayan ana PHP kodunuzdur. Siz bootstrap sınıfları hazırlayarak ve içine yazacağınız "_init" önadı ile tanımlanan korumalı (protected) methodlarla belli bir takım kaynakları uygulama başlarken ZF'ün kullanmasını sağlayabilirsiniz. Örn: "protected _initDB() {}" methodu bootsrap sınıfı yüklenirken veri tabanı işlemlerinizle ilgili kısmı da işlemenizi sağlayan geçiş kapısını açar.
ZF sınıflarını incelediğimizde, geliştirenlerin nesne yönelimli geliştirme felsefesini ne kadar iyi kullandıklarını ve bilinen bir çok tasarım şablonunu, kurdukları mimaride uyguladıklarını göreceksiniz.
Zend Framework size genel olarak şu özellikleri sunar;
Bu bölümde incelediğim kadarıyla sizlere yüzeysel olarak Zend Framework'ün bazı sınıflarından bahsedeceğim. Referans olarak ise Zend Framework'ün kendi Kullanım Klavuzundan yararlanacağım.
|
|
|
Yukarıdaki listede kalın yazılan sınıf isimleri, hakkında fikir sahibi olduğum ve inceleme fırsatı bulduklarımı temsil etmektedir.
Bu bölümde Zend Framework kullanım klavuzunda bulunan hızlı başlangıç rehberinden yararlanarak genel hatlarıyla sistemi size anlatmaya çalışacağım.
Her uygulamada olduğu gibi ZF tarafında da geliştiricilerin ihtiyaçlarına cevap verebilmek için sürekli değişiklikler olmakta. ZF gördügüm en disiplinli ve sistemli çalışan bir geliştirme ekibine sahip. İçerik sağlayıcı (Contrubutor) adı vereilen bu kişiler, ZF'ye hergün satırlarca yeni kod eklemekte. Başlarda kapalı düzen gitmekte olan ZF gelişimi bir süre sonra içerik sağlayıcıların da dahil olmasıyla gelişim ivmesini oldukça hızlandırmıştır. Sizler de ZF geliştirici olabilirsiniz. Yapmanız gereken tek şey ZF sitesinden ilgili bölümü ve kurallarını okuyarak sisteme başvuruda bulunmaktır.
Gelişimin ivmesi giderek armaktadır demiştik. bu konuda ZF cilerin yol haritasında diğer bir çok Framework gibi major değişikliklere gitme planları olduğunu görüyoruz. Başta daha uzman bir kitleye hitap etmek için tasarlanan ZF geliştiricileri, toplulukta bir çok temel başlangıç kılavuzu çıkacağını düşünerek daha fazla kitleye yayılacaklarını düşünmüşlerdir. Ancak bu durum tam bir fiyasko ile sonuçlanarak ZF'nin sadece uzman kesimin kullanımında kalmasına sebep olmuştur.
Şu sıralar Zend Framewok'ün 2.0 versiyonunu geliştirmeye başlanmıştır. PHP 5'in getirdiği bir çok özellik ve geliştiricilerde tabana yayılma çabasından ötürü, GitHub üzerinden daha bir sosyal kodlama ortamı ile geliştirilme kararı almaları bence oldukça doğru bir seçim olmuştur.
Daha detaylı incelemek isterseniz, Zend Framework 2.0 yol haritası ve geliştirme ekibini Zend Framework 2.0 da olması gerekenleri tartıştıkları adresleri ziyaret edebilirsiniz.
Uygulama çatılarını sadece özellik listesine bakarak kıyaslamayı her nekadar pek sevmesem de, internetten bulduğum bir tablo üzerinde konuşarak kısaca bu frameworkleri değerlendirmeye çalışacağım. Unutmayın bir frameworkü anlamanın en iyi yolu onu denemektir. Uygulama çatılarını ancak denedikten ve kurcaladıktan sonra fikir sahibi olabilir ve daha net karar alabilirsiniz.

Detaylı incelemek isterseniz, PHP Frameworklerin karşılaştırma tablosunu içeren bir wikipedia sayfası da var.