Öncelikle Symfony bir PHP framework ünden öte bir felsefedir. Gözümde Symfony PHP camiasının rock starıdır. Community si olsun Contributers ekibi olsun yönetici ekibi olsun kaliteli ve profesyonel bir kitle. Bunu sağlayan büyük oranda profesyonel bir şirket olan SensioLabsın projenin takibini yürütmesi, özellikle Fabien Potencier gibi bir core developer ının olması. Fabien Potencier ı araştıranlar anlayacaktır neden bu kadar övdüğümü şuan PHP üzerine yapılan bir çok projenin, framework ün kullandığı compenent ler teknolojiler @fabpot un elinden çıkmadır. Aynı zamanda proje yönetimi konusundada oldukça efsanedir. Örnek projeleri;

Amaç

SensioLabs ‘ın genel düşüncesi reusable components yazmaktır , ki bir component farklı projelerde rahatlıkla kullanılabilsin. Misal şuan Drupal, phpBB, Joomla! ve en çok Symfony alternatif olarak gösterilen Laravel birçok Symfony Components i kullanmaktadır, alakalı link ->. Yani şuana kadar aslında Symfony Components kullanmış olmanız muhtemel.

Core Developer Team

Ekibin büyük kısmı web development konusunda fazlaca tecrübeli ve birçoğu PHP nin önde gelen isimlerinden. Misal kesinlikle lame coders değiller, proje yönetimi nasıl olmalı, problem çözümü nasıl olmalı semver nasıl kullanılmalı vs. birçok konuda bilgi sahibiler. Birde Symfony Core Developer olmak gerçekten çok zor, alakalı link .Sırf bu sayfadaki rollerin, kimin ne yapabileceğinin düzenliliğinden dahi mükemmelliyetçiliği anlamak mümkün.

Contributing

Symfony ye contribute etmek çetrefilli bir iş gerçekten. Herşeyin bir standardı bir prosodürü var neredeyse. Buradan anlaşılacağı üzere development da katı kurallara sahiptir. Yani az biraz coding bilen kişi pr göndereyim benim de katkım olsun diyebileceği bir proje değil kesinlikle. Ben projenin kalitesini bu katı kurallarına bağlayanlarındanım. Fakat yanlış anlaşılmasın symfony nin ~1400 contributer ı var yani aslında biz developer ların elinden çıkma Open Source bir proje.

Semver denince benim aklıma direk Symfony projesi gelir. Sebebi ise mükemmel bir release roadmap i olması. Düşün ki şimdiden 2024 e kadar ki çıkacak releases planı hazır. Bu düzenlilik ne sağlıyor derseniz, birgün sabah kalktığınızda Symfony cahili olarak uyanmıyorsunuz. Misal Symfony3 release de silinecek code uses varsa bunu 2.7 gibi @deprecated işaretlemesini yaparlar ki sen yavaştan code revise ını yap Symfony3 e rahatlıkla geçebilesin. Özellikle büyük projeler için kararlı ve doğru semver kullanımı hayati öneme sahip. Symfony ile birgün composer update yaptığınızda patlama ihtimaliniz çok düşük. Aynı konunun Pythonve Angular.jsörneklerini araştırabilirsiniz.

Documantation

O kadar çok dilin framework ün doc. unu okumuşumdur kesinlikle Symfony bu konuda bir dünya markası. Eğer ki bir contributing yapılıyorsa kesinlikle onun doc. uda ekleniyor. Buradan browse edileceği üzere gayet anlaşılır şekilde rich content ile anlatımlı documentation bulunabilir. Ayrıca örnek kodlar, coding standards ve blog yazıları gibi bir çok içerik mevcut. Özellikle Best Practices adlı bir bölümü tadından yenmez :) Pdf leri indirerek yolda vs. okuyabilirsiniz. Bana bunlar yetmedi daha görsel birşeyler arıyorum dersen de KnpUniversity var. Birde verdiğim linklerdeki tüm content İngilizce, “Ama benim ingilizcem yok” a cevabım net “derhal terket burayı, ingilizce öğrenene kadarda gelme” :) şaka bir yana ama gerçekten ingilizce olmadan Symfony öğrenmek biryana kaliteli bir developer olmanız imkansız.

Community

Symfony community si fazlasıyla etkin, sorunlarınıza irc kanalından, mail gruplarına, slack grubundan, stackoverflow dan veya direk Github project issues kısmından bildirebilirsiniz, ama öncelikle bir google araması yapmayı unutmayın :). Çok zorda kalırsan da bana gönderebilirsin (ama böyle çok aradın bulamadın :)
Alakalı Linkler;

Mimari Bakış

Symfony Framework aslında sadece Symfony Components i birleştiren bir glue den ibarettir (bkn: SymfonyFrameworkBundle). Directory yapısına bakarsanız zaten vendor u çıkardıktan sonra geriye sadece app ın ve web in altında birkaç dosyadan ibaret olduğunu göreceksiniz. Benim gözümde Symfony ‘yi mükemmel kılanda bu modüler bakış açısı. Bu neyi sağlıyor, misal developer arkadaşım ben reusable XBundle yazacağım dediğin zaman bunu fazlasıyla destekliyor. Bu mantıkla Symfony için yapılmış binlerce 3. party bundle mevcut. Misal FosUserBundle, AsseticBundle vs. vs.
Modüler yapı ile neredeyse her noktada process e müdahil olabiliyorsun. Bunu nasıl yapıyor derseniz Event Dispatch mantığı (Farklı bir yazı ile bu konuyu da anlatmaya çalışacağım). Gerek naming gerek directory mapping açısından da kaliteli bir iş.

Şimdilik bu kadar fırsat buldukça bu yazının devamını getirmeye çalışacağım.


“ Symfony is a set of PHP Components, a Web Application framework, a Philosophy, and a Community — all working together in harmony.”


Mutlu Günler :)