Hangi Php Frameworkü Seçelim: Php Framework Karşılaştırma Tablosu
Arama motorlarından bu konuda fazlaca ziyaretçi geliyor. Kişisel tercihlerimi daha önceki yazılarımda belirtmiştim. Ancak şuradaki karşılaştırma tablosundan sadece php frameworkleri alıp, ufak tefek düzeltmelerle birlikte sadeleştirerek yorumsuz bir şekilde aşağıya ekliyorum. Eleştiri ve önerileriniz esirgemeyiniz.
|
Framework |
Ajax |
MVC |
i18n & |
ORM |
Framework |
Güvenlik |
Caching |
Doğrulama |
|
Agavi |
Evet |
Evet |
Evet |
Evet |
Evet |
Evet |
Evet |
Evet |
|
Akelos |
Evet |
Evet |
Evet |
Evet |
Evet |
|
Evet |
Evet |
|
CakePHP |
Evet |
Evet |
Evet |
Active record |
Evet |
Evet |
Evet |
Evet |
|
CodeIgniter |
Hayır |
Evet |
Evet |
3. parti |
Evet |
Hayır |
Evet |
Evet |
|
Drupal |
Evet |
Evet |
|
Çoklu |
Evet (basit) |
Evet |
Evet |
Form API |
|
eZ Components |
Hayır |
Evet |
Evet |
Evet |
Evet |
Evet |
Evet |
Evet |
|
FUSE |
Evet |
Evet |
|
Evet |
Evet (basit) |
Evet |
Evet |
Evet |
|
Kohana |
Hayır |
Evet |
Evet |
3. parti |
Evet |
Evet |
Evet |
Evet |
|
PHPulse |
Evet |
Evet |
Evet |
Hayır |
|
Evet |
Evet |
Evet |
|
PRADO |
Evet |
Evet |
Evet |
Active record |
Evet (basit) |
Evet |
Evet |
Evet |
|
Qcodo |
Evet |
QControl |
Evet |
Otomatik kod |
|
|
Evet |
Evet |
|
Symfony |
Evet |
Evet |
Evet |
Propel, Doctrine |
Evet |
Evet |
Evet |
Evet |
|
Zend |
Evet |
Evet |
Evet |
|
Evet |
Evet |
Evet |
Evet |
|
SilverStripe/ Sapphire |
Evet |
Evet |
Evet |
Active record |
Evet |
Evet |
Evet |
Evet |

Hocam, yazılarınızda küçük ve orta ölçekli uygulamalar için CodeIgniter, büyükler için de Zend kullanmayı önermişsiniz. Peki bir uygulamanın büyüklüğünü algılayabilmemiz açısından şunu sorayım : Örneğin bu site için ikisinden birini kullanacak olsanız siz hangisini tercih ederdiniz.
Bir de yukarıdaki karşılaştırmada kullandığınız ölçüler hakkında da kısaca bilgi verebilir misiniz. Örneğin ben “ORM”, ajax(bıilt-in) ve “i18n & l10n” ile ne kastedildiğini bilmiyorum. Teşekkürler..
1merhabalar,
ilk paragraftaki sorunuz göreceli bir soru. http://www.ibonette.com/php-framework-kullanilmali-mi/ bu yazımda bu sorunuzla ilgili fikirlerimi kısaca yazmaya çalıştım.
bu siteyi örnek vermişsiniz; bu site wordpress üzerinde çalışıyor. bir günlük (blog) yazacaksanız en uygun araç bu. ancak wordpress gibi bir uygulamayı baştan yazmak sözkonusu olursa, en uygun php framework, codeigniter…
ancak büyük uygulamalarla daha çok kurumların özel isteklerinde karşınıza çıkıyor. örneğin. çok özgün bir crm uygulaması (müşteri ilişkileri yönetimi) zend framework işidir. codeigniter ile de olur ancak çokfazla harici sınıf ve kodu frameworke eklemek durumudan kalırsınız.
son sorunuza gelince. evet haklısınız. kavramları açıklamakta fayda var. atlamışım. hemen ekleyeyim;
ajax(built in): framework ile birlikte bir ajax desteği gelip gelmediğini
MVC: daha önceki yazılarımda bahsetimiştim
i18n & l10n : i18n (Internationalization) ve l10n (Localization) ifade ediyor. uygulamalarınızı uluslararası kullanıma uygun hale getirme ya da yerelleştirme olanaklarını ifade ediyor.
ORM: veri tabanı işlemlerinizi nesne tabanlı yaklaşımla yapmanıza, ssql cümlelerinden büyük ölçüde kurtulmanıza yarar. activerecord vs.
Framework test: geliştirme aşamasında, uygulamanızın belli bölümlerini ya da tamamını test imkanlarını.
Güvenlik: Kullanıcı erişim yönetimi de denir. Uygulamaya erişimi çeşitli yetki sınıfları vs gibi kriterlerle kısıtlamak ve yönetmek.
Caching: önbellekleme. bazen bazı sayfalar hep aynı çıktıyı verir. bu gibi sayfaların gösterimi için her istekte veritabanı sorgusu yapmak yerine, bir kez sorgu yapıp çıktı ürettikten sonra belli sürelerde geçerli olmak üzere bu çıktıyı önbellekte saklayarak, sonraki isteklerde önbellektekini göstermeyi ifade eder.
Doğrulama (validation): kullanıcı verilerini sisteme alırken çeşitli şekillerde doğrulama işlemlerden geçirerek, hem zararlı kodları filtrelemek, hemde belli bir düzende veri girişini sağlamaktır.
Bilmem yardımcı olabildi mi.
2sevgilerimle
evet kesinlikle
Teşekkürler verdiğiniz bilgiler için.
3şimdi ben de blog tarzında bir site yapacağım. Anladığım kadarıyla en kolayı wordpress, kendim programlamak istersem de codeIgniter ile yapmak olacak. Ancak hem sonradan bazı başka uygulamalar eklemeyi düşündüğüm için, hem Zend hakkında az da olsa bilgim olduğu için hem de ilerde Zend’e daha çok ihtiyaç duyacağımı düşündüğüm için Zend ile yapmaya karar verdim.
blog sitesi yapmak için özel bir sebebiniz yoksa, yani benim bu sitede yaptığım gibi kendi yazılarınızı yazmayı amaçlıyorsanız, oturup kendiniz baştan kodlamakla uğraşmayın derim ben. ne de olsa en değerli şeyimiz zaman… bunun için wordpress biçilmiş kaftan. hem modifiye etmesi kolay, hem de hazır binlerce eklenti arasıdan bir sürü ek özellik katabilirsiniz. ha, kendimi geliştirmek istiyorum diyorsanız ya da başka sebepleriniz varsa onu bilemem tabi.
4kolay gelsin
CodeIgniter kendi sitesinde de dediği gibi küçük ve orta ölçekli sitelerde kullanılması tavsiye edilmektedir. Ancak bana kalırsa bir programlama çatısını ne kadar kolay öğrenebilirseniz, o kadar kolay kullanabilirsiniz.
ZEND büyük ölçekli sistemlere uygulanabilir denilse de yeterli dokümanının olmaması -en azından CodeIgniter kadar koaly anlaşılır bir dokümanının olmaması- ve yavaş çalışması nedeniyle, ben büyük ölçekli sitelerde de CodeIgniter’ı tercih etmekteyim.
Yine de herkese göre değişebilen bu tercih meselesinde benim tavsiyem, kolay öğrenip, kolay uygulamaya başlayacağınız, hızlı bir PHP çatısını seçmenizin yararınıza olacağıdır.
5evet. her yiğidin bir yoğurt yeyişi olmasına rağmen yazdıklarınıza katılıyorum.
öğrenim kolaylığı ve basit kullanım CI nin en önemli gücü… ancak bazı istisnai durumlarda zend framework (tüm uygulama ve doküman zorluklarına rağmen) daha rasyonel bir araç oluyor. yani benim de eleştirdiğim, hantallık ve geniş(ama çoğu projede gereksiz) kütüphanesi, bazı durumlarda zf ‘yi tercih etmek için tek neden haline gelebiliyor.
yine de CI, daha çok tercih etmek istediğim ve kullanmaktan zevk aldığım bir araç… bunu söylemem lazım. e tabi severek ve zevk alınarak yapılan iş de daha iyi oluyor.
6merhaba ben daha önce içerik yönetimi scriptleri kullandım ve
7artık projem için framework öğrenmem gerekiyor Türkçe kaynağı
bol olan öğrenilmesi fazla zaman almayan esnek bi yapıya sahip olan
ve girilen ülkeye göre dil değişmesi yapılabilen ve serverı
yormayan bir framework öğrenmek istiyorum hangisini önerirsiniz
şimdiden teşekkürler her yoruma okadar uzun cevaplar
yazmışsınız ve çok güzel bir blog hazırlamışsınız elinize
sağlık kolay gelsin
Selamlar,
İlginize ve yazdıklarınıza teşekkür ederim.
Sorunuza gelince;
Yazacaklarım kafanızı biraz daha karıştırabilir. Onu baştan belirteyim.
Php frameworkleri okadar fazla ki, php dilinin yapısal olarak kolay kodlanabilir ve öğrenilebilir olmasından dolayı, şu an programlama dilleri arasında en fazla frameworke sahip dil php yanılmıyorsam. Bu da doğal olarak seçim yapacak olak geliştiricilerin kafasını çok karıştırıyor. Buna ben de dahilim.
Her gün yenileri ekleniyor. Şahsi olarak hemen hemen tüm frameworkleri sürekli takip ederim. Özellikle yeni çıkanları. Bu nedenle bu konudaki görüşlerim değişkenlik gösteriyor.
Php frameworkler 2 yaklaşım doğrultusunda geliştiriliyor. Birincisi “convention over configuration” denilen konfigürasyondan ziyade, geliştirme yaparken belirli kuralara uyulması gereken frameworkler. İkincisi ise mümkün olduğu kadar geliştirme kuralı koymaktan uzak duran ancak geliştirme başlamadan önce yoğun konfigürasyon gerektiren frameworkler.
Birincisine örnek cakephp, ikincisine örnek ise zend framework tür.
Birinci grup frameworkler hemen hemen hiç konfigürasyon gerektirmediği için projeye başlamak çok hızlı olur. Ancak çok fazla kural koyduğu için geliştiricinin elinden esnekliği alır. Yani geliştiriciyi daha çok kısıtlar. Ama kullanması çok kolaydır ve çok hızlı proje geliştime olanağı sağlar.
İkinci grup frameworklerde geliştirmeye başlamadan önce yoğun olarak projenizle ilgili çeşitli konfigürasyon yapmak gerekir. Projeye başlama süreci daha zor ve sancılıdır. Ayrıca geliştirme süreci de ilk gruba oranla daha yavaştır. Ancak birinci gruba oranla, geliştiriciye çok daha fazla esnek bir geliştirme ortamı sunar. Kısacası geliştiriciyi daha az kısıtlar…
Kohana ise bu iki grup frameworkun tam ortasında…
Özet olarak ikinci grup php diline çok hakim, profesyonellere hitap eder.
Türkçe kaynak konusunda malesef durum tüm frameworkler için içler acısı. Cakephp gibi bazı frameworklerin klavuzlarının büyük kısmı türkçeye çevrilmiş olsa da yetersiz. Eğer bu işe ciddi anlamda girecekseniz ingilizce kaynaklardan faydalanmanın yolunu bulmanız gerekiyor. Ayrıca takıldığınız noktalarda (ki kesinlikle olacaktır) frameworkun kendi forumlarında sorunuzu dile getirebilmeli ve verilen cevapları anlayabilmelisiniz. Çok ileri seviye bir ingilizce değil bu, ancak biraz bilmek gerekiyor. Ha bu arada codeigniter.gen.tr ‘yi unutmamak gerekir.
Bir de bu yukarıda yazdıklarımın dışında yeni yeni frameworkler çıkmakta ki bazıları gerçekten gelecek vaadediyor. Bunlardan birisi Yii (www.yiiframework.com)… özellikle web 2.0, yani javascript, ajax vs kullanacaksanız (ki gelecek burada) yii çok cazip. İncelemenizde fayda var. Üstelik performansı da çok iyi.
Lokalizasyon ve çok dilli geliştirme, hemen hemen tümünde mevcut.
Özet olarak, yazdığınız kriterlere göre kohana ve yii framework gibi alternatifleri inceleyin. her ikisinin de sitelerinde videolar mevcut o videoları izleyin. nasıl kod geliştiriyorlar görün. Klavuzunu karıştırın. birisi size daha yakın gelecektir mutlaka.
Ancak ileride maaşlı olarak bir şirkette bu konuda çalışmayı düşünüyorsanız. Zend frameworkten başkasına bakmayın. Php geliştirme yapan hemen hemen tüm firmalar zend framework kullanıyor.
Başta yazdığım gibi kafanızı daha çok karıştırmış olabilirim. Ancak size tavsiyem en basit olarak gördüğünüz bir frameworkten başlayın, en azından mantığı çözün. Zaman kaybetmeyin. Beğenmezseniz başkasına geçersiniz çünkü hemen hemen hepsinin konuya yaklaşımı MVC olduğu için adaptasyon çok kolay olur.
Mantık şu;
Controller dosyaları ile kullanıcından gelen istekleri modele iletirsiniz, modelden gelen bilgileri kullanıcıya (view dosyalarına) gönderirsiniz. Adı üstünde kontroller. tıpkı trafik polisi gibi…
Model dosyalarında veritabanı üzerinde yapılacak olan işlemleri tanımlarsınız ve üretilen sonuçları controller a gönderirsiniz.
View dosyaları ise genellikle kullanıcının göreceği sayfayı tanımlarsınız. controllerdan gelen bilgileri burada istediğiniz şekilde, kullanıcıya sunarsınız…
kolay gelsin.
8