Yirmi yılı aşkın süredir PHP geliştiricisi olarak çalışıyorum. Küçük web sitelerinden büyük iş uygulamalarına kadar birçok projeye imza attım. Bu süreçte hem saf PHP’yi hem de Laravel ile Symfony gibi popüler çerçeveleri yoğun bir şekilde kullandım.
Laravel ve Symfony, sahip oldukları geniş topluluklar, olgunlaştırılmış ekosistemleri ve aylarca sürecek geliştirme süreçlerini kısaltan özellikleriyle gerçekten harika araçlar. Ancak bu yazı onları yermek veya alternatif önermekle ilgili değil. Benim hikayem, yıllardır yaşadığım bir gereksinimin sonucu olarak ortaya çıkan farklı bir yaklaşımı anlatmakla ilgili.
Projelerde Tekrarlanan Bir Kalıp
Yıllar içinde neredeyse her projede benzer bir ihtiyaçla karşılaştım. Büyük çoğunluğunda devasa bir ekosisteme değil, temel özellikleri önceden entegre edilmiş temiz bir başlangıç noktasına ihtiyaç duyuyordum:
- Yönlendirme (routing)
- Bağımlılık enjeksiyonu (dependency injection)
- Kimlik doğrulama (authentication)
- Şablon motoru (templating)
- Doğrulama (validation)
- Veritabanı göçleri (database migrations)
- CSRF koruması
- Hız sınırlama (rate limiting)
- Günlükleme (logging)
Projemi geliştirmeye başlamak için öncelikle hangi paketleri, başlangıç kümelerini ya da frontend yığınlarını kullanacağıma karar vermek yerine, doğrudan kod yazmaya başlamak istiyordum. Ancak mevcut çerçeveler genellikle buna izin vermiyordu.
Yaşadığım Hayal Kırıklıkları
Laravel’in sunduğu başlangıç kümeleri oldukça başarılı olsa da, bunlardan birini seçmek genellikle bir frontend ekosistemini de seçmek anlamına geliyordu. Örneğin:
- React mi kullanmalıyım?
- Vue mu tercih etmeliyim?
- Yoksa Svelte mi?
Bu seçimler genellikle Node.js, npm, derleme araçları ve ek bir dizi aracı projeye dahil etmek zorunda kalmam anlamına geliyordu. Bu araçlar ihtiyaç duyulduğunda harika. Peki ya ihtiyaç olmadığında?
Bazı projelerde modern PHP ve Twig kullanarak sunucu tarafında render edilen uygulamalar geliştirmek istiyorum. Bu durumda JavaScript araç zincirine ihtiyaç duymuyorum. İşte tam da bu noktada aklıma sürekli aynı soru geliyordu:
"Neden sadece PHP odaklı, modern bir uygulama başlangıç noktası yok?"
Beacon’un Doğuşu
Bu sorunun yanıtı olarak projemi geliştirmeye başladım ve sonunda Beacon adını verdiğim bir çerçeve ortaya çıktı. Hedefim hiçbir zaman Laravel veya Symfony ile rekabet etmek değildi. Benim amacım çok daha basit ve odaklıydı:
- Kurulumu kolay olmalı
- Anlaşılması ve yapılandırılması basit olmalı
- Modern PHP özelliklerini benimsemeli
- Güvenlik varsayılan olarak sağlanmalı
- Gerçek dünyadaki uygulamalar için uygun olmalı
Onlarca pakete bağımlı olmak yerine, hemen hemen her projede kullandığım temel özellikleri içeren tutarlı bir altyapı oluşturmak istedim.
Beacon’un Sundukları
Beacon, benim için vazgeçilmez olan birçok özelliği içeriyor:
- Bağımlılık enjeksiyonu
- Öznitelik tabanlı yönlendirme (attribute-based routing)
- Middleware desteği
- Twig şablon motoru
- Kimlik doğrulama ve yetkilendirme
- Doğrulama mekanizması
- CSRF koruması
- Hız sınırlama
- Veritabanı göçleri
- Komut satırı (CLI) araçları
- Güçlü tip kullanımı
- PHP 8.5+ desteği
En önemli odak noktam, kodun anlaşılırlığı oldu. Altı ay sonra bile koda baktığımda ne yaptığını tam olarak anlayabilmek istedim. Bu nedenle, Beacon’un tasarımında "akıllı" olmaktan çok "açık" olmaya önem verdim.
Kazandığım Deneyim
Bir çerçeve geliştirmek, Laravel ve Symfony gibi projelerin arkasındaki mühendislik anlayışını çok daha derinlemesine takdir etmemi sağladı. Yönlendirme, bağımlılık enjeksiyonu, middleware, oturum yönetimi, kimlik doğrulama ve doğrulama gibi özellikler, ilk bakışta basit görünse de, kendiniz geliştirmeye başladığınızda oldukça karmaşık hale gelebiliyor.
Bu proje, kariyerimin en ödüllendirici mühendislik çalışmalarından biri oldu. Hem teknik bilgimi hem de tasarım anlayışımı önemli ölçüde geliştirdi.
Geri Bildirimlere Açığım
Beacon açık kaynaklı bir proje ve diğer PHP geliştiricilerinden geri bildirim almak istiyorum. Amacım kimseyi Laravel ya da Symfony’den vazgeçirmek değil. Sadece modern bir PHP uygulama çerçevesi geliştirmenin tasarım kararlarını, mimarisini ve ödünleşimlerini tartışmakla ilgileniyorum.
Eğer Beacon ilgini çekiyorsa, fikirlerinizi, önerilerinizi ve yapıcı eleştirilerinizi duymak isterim. Ancak unutmayın, Beacon henüz geliştirme aşamasında ve bazı özellikler henüz tamamlanmadı ya da geliştirilme aşamasında. Projeyi yakından takip etmek için GitHub deposunu inceleyebilirsiniz.
Yapay zeka özeti
PHP’nin 20 yıllık tecrübesiyle geliştirilen Beacon adlı modern PHP çerçevesi hakkında detaylı inceleme. Kurulumu basit, anlaşılır ve güvenli bir yapı sunan bu proje hakkında her şey.