Benim gibi uzun yıllar web tabanlı uygulamalarla haşır neşir olmuş birisi değilseniz, web tabanlı uygulamalar yazmak konusunda işe ilk başladığınızda sizi hayal kırıklıkları bekliyor olabilir. Örneğin php dilini ele alalım. İnternetin en çok kullanılan programlama dilinde blog gibi belirli bir dinamik site uygulaması yazmak isteseniz 1-2 kitap devirmeden bu işi toparlamanızın mümkün olmayacağını söyleyebilirim. .NET ve C# dili ile uğraşımdan sonra PHP ile kod yazmak istememin sebepleri belki başka bir makalenin konusu olabilir. Ancak bu yazının amacı, size PHP ile işe başlarken, PHP framework seçimi yaparken faydalı bir bakış açısı kazandırmak.
Niçin PHP Framework ?
Çünkü hazırlar. Hazırı kullanmak, işi daha kolay, daha güvenli ve daha kolay yapmanızı sağlar. Tekerleği yeniden keşfetmezsiniz. Uğraşınız azalır, amacınıza odaklanır, projenizi daha iyi hale getirecek zamanı daha değerlendirecek noktalara odaklanırsınız.
Php Framework’ler
Php ile başlangıçtan kullanmak için MVC (Model, View, Controller) özelliği bulunan bir framework ararken karşıma onlarca açık kaynak php framework çıktı. Zend Framework, CakePhp, CodeIgniter, Symfony … Bu liste uzayıp gidiyor. Her birinin bir diğerine göre avantajı/dezavantajı var.
Nasıl seçim yapmalı ?
Temel soru bu. Kimi framework hızlı bir başlangıçla kullanılabilirken bir diğer biraz daha okuyup çalışmayı gerektiriyor. Dökümantasyon da önemli tabii ki. Size kısa ve basit bir liste oluşturarak göstermek istiyorum:
- Veritabanı bağımsız olamlı (mysql, mssql, postrgesql vb…)
- Konfigürasyon sistemi kapsamlı olmalı. Bir uygulama yazdıysanız, 2., 3., 10. sitede farklı konfigürasyonla çalıştırabilmelisiniz.
- Uygulama/Modul/Component yapısı bulunmalı. Kapsamlı uygulamalar, modüller ve parçalara ayırarak daha kolay yazılacağı gibi kolay denetelenecek, tekrarlanan işleri componentlerle hazırlayarak yazılım zamanınızı kısaltacaksınız.
- Template sistemi kolay ve anlaşılır olmalı. Her web sitesi için farklı tasarımlar (html, css, imajlar, javascript) olacaktır. Bu farklılıkları kolaylıkla değiştirebileceğiniz bir sistemi bulunmalı
- CRUD (Create/Read/Update/Delete) uygulamalarını kolayca oluşturabilmelisiniz.
- Veritabanı yönetimi kolay olmalı. ORM (Object Relational Mapper) desteği olmalı. Veritabanı yapısının güncellenmesi gerektiğinde kolaylıklar olmalı.
- Mutlaka cache sistemi olmalı ya da mevcut cache uygulamalarından birini desteklemeli.
- Plugin ya da başka kütüphaneler ile bağlantısı olmalı.
- SEO uyumlu uygulamalar geliştirebilmek için MVC (Model, View, Controller) özelliği olmalı.
Sonuç
Yukarıda özetlediğim unsurlara başka detayları, muhtemelen sizin ihtiyaçlarınızı da ekleyebilirsiniz. Ancak temel husus, uygulama geliştirmeye başlarken, uygulamanın gelişip ilerlediği aşamalarda nelere ihtiyaç duyabileceğinizi iyi tasarlamak ve ona göre en az kod yazarak hangi framework ile sonuca ulaşacağınızı tahmin etmektir.
Sonuç olarak ben Symfony’de karar kıldım. Symfony yukarıdaki özelliklerin yanında pek çok özelliği de içinde barındırıyor. Fırsat buldukça deneyimlerimi sizinle paylaşmaya çalışacağım. Mutlu programlamalar 
21.12.2012 : Bu yazıyı yazdığım tarihten bugüne PHP framework dünyasındaki değişiklikler uygun ilaveler yapmam gerekti.
Artık Yii Framework Kullanıyorum
Etkili biçimde proje geliştirmek için aradığım özelliklerin hepsini bir Yii PHP framework karşılıyor. Bu konudaki inceleme yazımı okuyabilirsiniz.
Popüler PHP Framework Listesi
Sizlere popüler PHP framework listesi hazırladım.
- Codeigniter
- Yii Framework
- Symfony
- Kohana
- Zend
Daha ayrıntılı bilgi için PHP Frameworks adresine bakabilirsiniz.
Güzel bir makale olmuş ama ben henüz bir karar veremedim framework konusunda.Hatta kullanıp kullanmamakta bile kararsızım direkt php ile kodlamak daha hoş görünüyor:)