PHP Framework Kullanılmalı mı?
Php framework kullanılmalı mı?
Ne zaman php framework kullanılmalı?
Kullanılacaksa hangisi tercih edilmeli?
Bu soruların cevabını bir zamanlar çok aramıştım. Nette okumadık yazı, ayrıntılı olarak incelemediğim php framework, danışmadığım dostum kalmamıştı. Bütün uğraşlarım sonucunda oluşan fikirlerimi siz değerli ziyaretçilerimle paylaşmak için (fazla sıkmadan, kısaca) birşeyler yazmak istedim.
Öncelikle belirtmek isterim ki her web programcısının kişisel şartları, alışkanlıkları, ihtiyaçları farklı olabilir. Bu nedenle burada bahsettiklerim mutlak gerçekler değil, benim kişisel gerçeklerim doğrultusunda oluşan kendi şahsi fikirlerimdir. Bu tür konularda fanatik olmamak, su gibi akışkan olmak gerektiğine inanırım. Bugün doğru olan, yarının şartlarına göre doğru olmayabilir. Neyse, lafı fazla uzatmayarak konuya geçeyim.
Her php programcısının iyi ya da kötü kendi kişisel kütüphanesi vardır. Veritabanı, metin işlemleri, dosya işlemleri vs gibi bazı temel işlemlerin kodlarını bu kütüphanede tutarak, gerektiğinde alıp kullanırlar. Bu çok daha hızlı ve güvenli bir şekilde uygulama geliştirmek mümkün olur.
Aslında frameworklerin ortaya çıkmasındaki temel fikir de bundan farklı değildir. Php frameworkler de sık sık kullandığımız belli kodları bir araya toplayarak, mvc gibi tasarım desenleri kapsamında daha derli toplu ve hızlı kod geliştirme ihtiyacından doğmuşlardır.
Fakat bu temel ve basit ihtiyaç zaman içerisinde yeni ihtiyaçlar doğurmuş ve frameworklerin çok hantal bir hale sokmuştur. Kolaylık ve performans sağlaması hedeflenen frameworkler zaman içinde öğrenmesi zor ve oldukça yavaş bir hal almıştır. Öyleki bazı frameworkleri çözmek ve verimli olarak kullanmak çok profesyonel php programcıları için bile oldukça zaman alıcı bir husus olmuştur. Örnek vermek gerekirse, symfony bunlardan birisidir.
Symfony gibi bir frameworke bulaşan programcı çok büyük ihtimalle hemen hendi kullandığı kütüphaneye dönecek ve framework kullanmanın gereksiz, hatta eziyet olduğunu savunacaktır. Ancak fikir oluşturmak ve karar vermek için çabuk davranmamak lazım. Çünkü unutmamak gerekir ki frameworkler o kadar çok çeşitlenmiştir ki her türlü programcıya ve tarza hitap eden framework bulmak mümkündür. Performans olarak oldukça iyi, öğrenmesi ve kullanması kolay, sade ve basit frameworkler de mevcuttur. Codeigniter ve ondan doğan Kohana, bu tür frameworklere en güzel örneklerdir.
PHP framework kullanılmalı mı ?
Kesinlikle evet. Şurası çok açık ki frameworkler, binlerce, hatta milyonlarca kişi tarafından test edilerek her geçen gün daha iyileştirilen bir çok kütüphaneyi size sunmaktadır. Elbette kendi kütüphanenizi de kullanabilirsiniz ancak genel kabul görmüş bir frameworkü kullanmak çok daha mantıklıdır. Tabii ki bunu yaparken kendi kriterlerinizi ortaya koyarak ona göre değerlendirme ve seçim yapmalısınız.
Ne zaman php framework kullanılmalı ?
İhtiyacınız olduğu zaman. Evet hayatın herhangi bir alanında bir araca ne zaman başvurursunuz, ihtiyacınız olduğu zaman… Burada da durum farklı değildir. Biraz daha somutlaştırmak gerekirse; Ufak tefek işler için framework kullanmak pek mantıklı değil. Nispeten kapsamlı bir uygulama yapmak, projeye başlarken ciddi bir plan ve program yapmak ihtiyacı hissediyorsanız, frameworke ihtiyacınız var demektir. Bakkala gitmek için traktör kullanmayın ama tarlada da bilek gücü kullanmakta ısrar etmeyip traktör kullanın…
Hangi php framework kullanılmalı ?
Karar verebilmek için kriterleriniz olmalı. Benim kriterlerim, performans, kullanım ve öğrenim kolaylığıdır. Bu kriterlerin benin götürdüğü frameworkler ise Codeigniter ve Kohana ‘dır. Şu an itibariyle codeigniter, zend framework den 3-5 kat, Symfony ‘den 8-10 kat daha hızlıdır. Gelecekte bu durum değişirmi bilinmez. Kullanım ve öğrenim kolaylığı açısından gerçekten codeigniter ve kohana üzerine yok. İncelemeye başladıktan 10 dk sonra ilk “merhaba dünya” uygulamanızı yazıyorsunuz. Bu iki frameworkün hiç mi kötü yanı yok derseniz; evet tabii ki var. Örneğin kullanıcı yönetimi ilgili kapsamlı çözümleri yok malesef. Bu nedenle oldukça büyük uygulamalarda codeigniter ya da kohana yerine zend framework daha uygun bir araç. Zend framework kullanırken neredeyse hiçbir harici koda ihtiyacınız kalmıyor. Sonuç olarak ihtiyacınız kullanacağınız aracı belirleyecektir.
Özetlemek gerekirse ben;
- Ufak tefek işlerde framework kullanmamayı,
- Bir uygulama söz konusu ise ancak çok kapsamlı değilse Codeigniter ya da Kohana ‘yı,
- Çok geniş kapsamlı ve özellikle ayrıntılı kullanıcı yönetimi gerektiren uygulamalarda Zend framework kullanmayı tavsiye ederim.
Sizler de kendi fikirlerinizi, yorumlarınızla paylaşırsanız sevinirim.
Sağlıcakla kalın…

Merhabalar;öncelikle yazınız için teşekkür ederim..Şöyle bahsedeyim,kişisel bir takım calısmalar yapıyorum ve genelde bu yaptığım calısmalar kobilere yaptığım freelancer calısmalar..Ancak bazı durumlarda sinamik web sayfaları yapmam gerekiyor bu durumda beni joomla kurtarıyordu ancak öyle bir durum yaşıyorum ki şuan joomla’yı kurarken içim inanın -cız ediyor.Oyüzden belli programlama bilgisi edinmeye karar verip 4-5 ay önce php calısıyordum gerek örnek scriptlerde değişiklik yaparak,sadeleştirme yaparak farklı calısmalar yapıyordum ancak okul ve iş tempomdan dolayı ara verdim azçok giriş olarak biliyorum hiç değilse kodu okudugum zaman ne iş yaptığını anlayabiliyorum..Php Framework’leri sürekli duyuyor ve görüyordum fakat birtürlü mantığını anlamıyordum ve sizin bu yazınızda anladım..Codeigniter kullanmaya karar verdim fakat nasıl kullanacağımı bilmiyorum web üzerinde kurup o şekildemi calısıyorsunuz yoksa indirdiğimiz dosyalardaki hazır kod parcacıklarınımı kullanıyorsunuz ..Şimdiden ilgi ve alakanız için teşekkür eder iyi calısmalar dilerim..
1Akif ..
Sitenizi gezmemiştim gezdim ve sorularıma cevap buldum teşekkürler..RSS takipcinizim
2değerli yorumlarınız için teşekkür ederim akif bey…
sorunuza gelince;
öncelikle aşağıdaki iki yazımı incelemenizi tavsiye ederim. kısmen de olsa kafanızda codeigniter (dolayısı ile framework) kullanımı konusunda birşeyler şekillenecek.
http://www.ibonette.com/codeigniter-1-baslangic/
http://www.ibonette.com/codeigniter-2-controller/
bunun yanında herhangi bir php framework kullanımıyla uğraşmaya başlamadan önce, php ile nesne tabanlı programlama konusunu inceleyiniz. çünkü bu ve buna benzer frameworkler belli görevleri yapan çeşitli sınıfların bir araya toplanmasından ibaret. yani aslında frameworkleri kullanırken hazır sınıfları kodlarınız içinde çağırıp kullanıyorsunuz. aslına bakarsanız kullandığınız joomla ya da drupal gibi içerik yönetim sistemleri artık birer framework halini aldı. hatta çoğu durumda bu gibi gelişmiş içerik yönetim sistemlerinden framework olarak da bahsedildiğini görmüşsünüzdür. mesela joomla eklentileri de bu sayede çeşitli programcılar tarafından genellikle temel joomla framework kütüphanesi kullanılarak geliştirilir. Codigniter ya da zend framework bunlardan daha ham araçlar denebilir. bu nedenle programcılar tarafından daha çok, drupal gibi spesifik frameworkler yerine codeigniter gibi daha genel amaca hizmet eden ve istenildiği gibi rahatça şekillendirilebilen frameworkler tercih edilir.
daha önce sadece prosedürel programlama yaptıysanız, sınıf kavramını, fonksiyonlara benzetebilirsiniz. bu benzetmeyi sadece kafanızda canlandırmak için yazdım. ancak sınıf kullanımı, yani nesne tabanlı programlama, çok daha kapsamlı ve kolaylıklar sunan bir yaklaşım.
kafanıza takılan konuları yazarsanız elimden geldiğince yardımcı olmaya çalışırım.
sevgiler
not: ikinci yorumunuzda sorunuza cevap bulduğunuzu yazmışsınız gözümden kaçmış. ama olsun artık bu yazdıklarım ek bilgi olur
3Cevab’ınız için teşekkürler.Kobi ve bu tip ölçekli firmalara web sitesi yapıyorum güncellenebilir sayfalar yapmak aslında pekde zor gözükmüyor kendimce ufak veritabanı veri girişi,düzenleme ve silme gibi işlemler yapabiliyorum..Sizce framework alt yapısı kullanarakmı devam etmeliyim ? , yoksa http://www.yakuter.com/ezsql-veritabani-sinifinin-kullanimi/ gibi benim şuanda kolayıma gelebilecek tipdeki tool’larımı kullansam ? Sizce ?
4bu sorunun cevabı programcıdan programcıya değişir.
bana kalırsa kendiniz codeigniter ile biraz ilgilenin, ufak ufak uygulamalar geliştirin. bu sayede framework un size sundukları ile kendi ihtiyaçlarınızı karşılaştırıp en doğru kararı verirsiniz.
ancak şurası tartışmasız ki, framework kullanımı programcıya çok daha geniş bir vizyon kazandırıyor. joomla gibi hazır sistemlerin sınırları ortadan kalkıyor. ya da spagetti kod yazmanın demotive edici, yıldırıcı yanı ortadan kalkıyor. dolayısı ile müşterilerinize sunacağınız çözümler daha da artıyor. temel bir takım işlerin yanında daha da ayrıntılı çözümler yapabilmek için altyapı kazandırıyor.
sadece web sitesi yapmayı hedefliyorsanız joomla vs yeterli olur ancak sunduğunuz çözümler bağlamında daha geniş bir yelpazeniz olsun istiyorsanız mutlaka programlama ve framework kullanılmalı. web siteleri standart… ancak her müşterinin kendine göre çok değişik ihtiyaçları da olabiliyor. bunların herbiri ayrı satış fırsatı ve iyi seviyede programlama bilgisi olmadan bunlara hitap etmek çok zor… işte frameworkler bu konuda programcıyı belli bir disiplin altına sokuyor ve daha hızlı ve daha standart yöntemlerle uygulama geliştirmeyi sağlıyor.
Bunun yanında codeigniter kullanmak, yukarıda linkini verdiğiniz sınıfı kullanmaktan çok daha kolay ve güvenli…
codeigniter veritabanı sınıfını kullanırken güvenlik konusunu düşünmenize gerek kalmıyor, framework bunu sizin için arka tarafta yapıyor. sorgulama araçları çok daha çeşitli ve çoğu zaman sql sorgusu bile yazmanıza gerek kalmadan frameworkun sunduğu araçlarla sorgu yapabiliyorsunuz. sadece frameworkun temel çalışma mantığını ve veri akışını başlangıçta çözene kadar biraz zorluk çekersiniz. ondan sonrası işlerinizi çok kolaylaştıracak. zaten frameworklerin amacı da bu. ayrıca framework içindeki veritabanı vs gibi çeşitli sınıfların birbiri ile uyum sorunu da yok. üstelik frameworkü kullandıkça gözünüz kapalı uygulama geliştirmeye başlıyorsunuz. yani bence, ekrana basit bir çıktı vermek gibi ufak tefek işlerin ötesinde bir uygulama söz konusu ise, tek tek sınıfları alıp kullanmaktansa framework kullanmak çok mantıklı ve sağlıklı…
özetle, siz codeigniter ile uygulama geliştirecek derecede ayrıntılı ilgilenin. zamanla zaten, ne zaman frameworke ihiyacınız olduğunu çok rahat belirleyeceksiniz. ama herhangi bir framework bir web programcısının alet çantasında mutlaka olmalı… kesinlikle uzak durmayın. kullanmasanız bile vizyonunuz inanılmaz genişleyecek. bu bile başlıbaşına büyük bir fayda.
sevgiler
5İbrahim bey;üşenmeden yazdığınız değerli yorumlarınız için tekrar tekrar teşekkür ederim.Yavaş yavaş gelişimlere basladım kurulumunu gerçekleştirdim ufak ufak uygulamalara basladım ilgi ve alakanız için teşekkür ederim..
6rica ederim… az da olsa yardımcı olabildimse ne mutlu bana…
7eline sağlık hocam. düşün düşün kafayı yemek üzereydim. demek ki üç tane framework öğrenip eski bilgilerimizi unutmuyoruz olay bitiyor. en kapsayıcı çözüm spektrumunu böyle sağlarız sanırım.
haydi kolay gele herkese…
8Merhaba çok güzel bir yazı bende bu framework konusunu bunu sizin gibi uzun süre araştırdım
9fakat , şu yorumunuza hitaben http://www.codeigniter.gen.tr/post/show/php_atisi_secerken_dikkat_edilecek_noktalar
sitenizde hep codeiginter demişsiniz fakat yorumda cekephp diyorsunuz neden cakephp
ben aslında cake ile CI arasında bi gelgit yaşıyorum
başlangıçta hangisi öğrenilmeli
yardımcı olursanız sevinirim
sevgili xxs_ops, gerçekten çok dikkatlisiniz.
evet haklısınız. bilişim sektöründe sürekli değişiklik ve gelişmeler oluyor. bunun yanında daha önce farkında olmadığımız şeylerin farkına varabiliyoruz. bu durum da bunun sonucu. yani aslında tutarsızlık gibi görünüyor ancak bence olması gereken de bu. fikirlerimize saplanıp kalmaktansa, gerektiği zaman revize etmekten çekinmemek lazım diye düşünüyorum.
Başlangıçta CI ‘ın basitliği çok hoşuma gitti ancak kullandıkça, ihtiyacım olan bir çok şeyi karşılayamadığını gördüm. ACL vs gibi çok temel olarak ihtiyacım olan önemli konularda çözüm yok. kendi kütüphanenizi frameworke eklemek çok kolay ancak framework güncellemelerinde kütüphanelerin yeni versiyondaki durumu vs soru işareti. ve çoğu zaman sorun yaratıyor. müşterilerinizin kullandığı uygulamalardaki framework versiyonunu değiştirdiğinizde üçüncü parti kütüphaneler potansiyel problem kaynağı olacağı için CI dan soğumaya başladım. bunun yanında, CI forumlarında, bazı önemli kütüphanelerin framework core a eklenmesini teklif ettim ancak ellislab firmasının parayla sattığı başka ürünlerin satışını baltalayacağı için(böyle söylemediler ancak durum bu) kesinlikle sıcak bakmadılar. piyasadaki bütün frameworklerde olan, ancak CI da olmayan bir kütüphanenin, CI ya eklenmemesinin CI in basitliğine aykırı olduğunu söylemek büyük saflık. dolayısı ile tam anlamı ile özgür bir topluluk olmayan (ellislab firmasına ait bsd lisanslı bir framework) CI dan iyi ce soğudum. sonuçta framework ün geleceği kullanıcıların ve topluluğun ihtiyaçlarından ziyade, firmanın menfaatlerinin gözetileceği çok açık ki bunu yukarıda bahsettiğim gibi kendim de gördüm zaten. kendilerini suçlamıyorum. haklı da olabilirler. ancak durum bu.
bu iki temel nedenle başlangıçta performans nedeni ile uzak durduğum cake ile daha ayrıntılı ilgilenmeye başladım. evet performans olarak biraz farklı ancak artık sunuculardaki donanımdan ziyade internet hızları darboğaz oluşturduğu için pek önemli değil. yani local hostta değil de, internetteki aynı konfigurasyona sahip bir sunucuda hem CI hem cake uygulamasını test ederserseniz, aslında kullanıcı açısından önemsenmeyecek bir fark olduğunu görebilirsiniz. ayrıca cake ‘in, framework kullanıcısına sunduğu araçlar çok daha zengin ve geliştiriciyi birçok gereksiz işten kurtarıyor. yani madem framework kullanarak işleri hızlandırmayı amaçlıyoruz, o zaman neden, işleri daha da çok kolaylaştıran cake gibi bir framework ü kullanmıyoruz.
bir de kohana var. cake’in “convention over configuration” felsefesini almış, CI ‘nin basitliği ile birleştirmiş. ortaya şu an için bütün alternatiflerden daha kullanışlı bir framework çıkmış. zaten konahanın çıkış noktası olarak benim yukarıda belirttiğim nedenlere benzer olduğunu kendileri de açıkça yazmışlar.
kesinlikle ama kesinlikle kohana yı tavsiye ederim. en azından bir inceleyin derim: http://kohanaphp.com
bunun yanında çoktandır görmezden geldiğim Asp.net var ki artık görmezden gelemiyorum. O da mutlaka incelenmeli. Geliştirme süresini inanılmaz kısaltıyor. bizim php de onlarca satır yazarak yaptığımız örneğin bir sayfalama konusunu tek tıkla halledebiliyorsunuz. bunun getirileri götürüleri çok tartışıldı, tartışılıyor. ancak şurası gerçek ki amacı iş yapmak, iş çıkarmak olan benim gibi kişilerin birim zamanda çok daha fazla iş çıkarmasını sağlayacak bir alternatif. Asp.net ten bunca zamandır uzak kalmak büyük hataymış, bunu da açıkça itiraf ediyorum.
php frameworkler konusunda çeşitli zamanlarda birine zıt gibi görünen yazılar yazdığım için toparlayıcı bir yazı yazmayı düşünüyordum. bu sizin yorumunuz buna vesile oldu. teşekkür ederim. aklıma gelenleri yazdım. sürçü lisan etti isem affola.
10saygılarımla
ben teşekur edrrim çok bilgilendirici oldu ozaman kohana ile başlayayım,
11aslında bu yorumunuza biraz daha birşeyler katıp blogda yayınlasanız
mesela
neden codeigniterden soğudum olabilir başlık
bu şekliyle daha çok kişi görür, herkes yorum okumazda
yine görüşmek üzere
sağlıcakla kalın.
öneriniz güzel. birkaç alternatif daha var onları da dahil edip önümüzdeki günlerde yazacağım daha kapsamlı bir yazı. asp.net i de ayrıntılı olarak dahil etmeyi düşünüyorum.
12Teşekkürler.
Yazınızı okuduktan sonra CodeIgniter’ı araştırmaya başladım. http://www.webteders.com/Php-CodeIgniter-Framework-Yapisina-Giris-gorsel-video-goruntulu-ders-241.html şu adreste çok güzel bir türkçe görsel ders buldum ve zorlanmadan başladım.
13