Symfony 4 Giriş

Hatice Ergün
3 min readJul 19, 2018

Daha önceki yazılarımda, Türkçe içeriği çok olan teknolojileri ‘kısaca’ başlığı ile ‘işimize yarayacak’ kadarını özetlemeyi amaçlamıştım. Ancak şimdi Symfony 4 ile ilgili uzun bir seri hazırlamayı düşünüyorum. Symfony 4 için Türkçe içerik az olduğundan, elimden geldiğince uzun uzun yazacağım. Seri boyunca karşınıza çıkan tüm hataları lütfen bana bildirin. Küçük bir harf hatası da olsa düzeltmeniz beni mutlu edecektir.

‘Neden Symfony’ diye bir araştırma yaparsanız bu soruya, tatmin edici nitelikte Türkçe yazılar ve sunumlar bulabilirsiniz. Symfony felsefesi ‘tekerleği yeniden icat etme!’ der. Yani var olan şeyleri tekrarlamayalım. Bu konu için buradaki yazıyı inceleyebilirsiniz.

Başlayalım artık.

Symfony Sürümleri ve Farklılıklar

Symfony 2 daha sonra Symfony 3 ve en son Symfony 4 sürümleri yayınlandı.

Symfony 2 sürümünde kullandığımız console, app dizinindeydi. Terminalde php app/console ... şeklinde komutlarla projemizi yönetiyorduk. Symfony 3 sürümüyle birlikte console, bin dizinine alındı. Symfony 3 ve Symfony 4 sürümlerinde konsol için php bin/console ... şeklinde komutları kullanmaya başladık.

Symfony 2 ve Symfony 3 içinde Silex kullanılıyorken, Symfony 4 içinde artık Flex var. Flex bir Composer eklentisidir. Flex sayesinde üçüncü parti paketleri kullanmak ve projeye dahil etmek daha kolay oldu. Symfony 3 içinde bir paket kurduğunuz zaman bunu kernel dosyasına, routing vs. dosyalarına manual olarak eklemeniz gerekiyordu. Artık Flex sayesinde sadece composer ile paketi kurmak yeterli. Geri kalan tüm eklemeleri Flex yapıyor. Flex hakkında daha detaylı bilgi için buradaki yazıyı inceleyebilirsiniz.

Symfony 3 içinde Doctrine ve Twig yüklenmiş olarak geliyordu. Symfony 4 ile bunu kaldırdılar. Projeye göre, eğer ihtiyaç varsa ayrı bir paket olarak kurulması gerekiyor. Burda amaçlanan daha küçük boyutda bir yapı kurmak. Hız ve performans düşünülerek, paketlerin varsayılan olarak kurulmasını kaldırmışlar (Serinin ilerleyen yazılarında Twig ve Doctrine konularını detaylandıracağız).

Symfony 3 içinde iki modda çalışılıyordu, Development ve Product olarak projeyi iki modda geliştirebiliyordunuz. Proje app.php ve app_dev.php olarak web dizini içindeydi. Symfony 4 ile birlikte bu karmaşıklığı ortadan kaldırdılar ve index.php olarak tek dosya haline getirdiler. Bundan sonra Development ve Product modunu .env dosyası içinden belirleyip, tek bir index.php dosyasından geliştirme yapılacak.

Proje testleri src dizini içindeyken, artık ana dizinde yer alıyor. parameters.yml dosyasını .env olarak değiştirdiler. View katmanı resources içindeyken, bu dizin ortadan kalktı ve yerine templates geldi… Tüm farklılıkları listelemeyeceğim. Symfony 3 kullanıyorken Symfony 4'e geçiş yapmak isteyenler için ilk etapta karşılaşacakları farklılıklar bunlar olacaktır.

Symfony 4 Gereklilikleri

Symfony 4 kullanabilmeniz için PHP 7.1.3 ya da üzeri bir versiyona sahip olmanız gerekiyor. Ayrıca Composer kullanmanız şart. PHP versiyonunu öğrenmek için terminalinizde php -v komutunu çalıştırabilirsiniz. Composer kontrolünü de yapmak için composer -v komutunu çalıştırabilirsiniz.

Symfony 4 Kurulum

Bir proje başlatmak için Composer kullanacağız. Symfony 3 sürümünde, symfony install komutu ile proje oluşturulması tavsiye ediliyordu. Artık, Symfony 4 sürümünde Composer kullanmak tavsiye ediliyor. Terminalde,
composer create-project symfony/website-skeleton proje_ismi komutu ile projeyi kuralım (website-skeleton, Symfony tarafından hazırlanmış, web uygulamaları için bir ortamdır. website-skeleton kurduğumuz için, projemizde ihtiyacımız olabilecek tüm paketler kurulu geliyor.)

Ardından cd proje_ismi komutu ile proje dizinin içine girelim.

Symfony içinde konsol kullanabildiğimizden bahsetmiştim. Bu konsol sayesinde birçok karmaşık işi birkaç komutla halledeceğiz. Bu konsol bizim elimiz kolumuz olacak diyebilirim. Mesela makinenizde Apache ya da Nginx olmadan da projeyi localhostda çalıştırabileceğiz. Deneyelim.

php bin/console server:start komutunu çalıştırdıktan sonra proje 8000. portda ayağa kalkmış olacaktır. Tarayıcınızı açıp localhost:8000 yazıp kontrol edebilirsiniz.
php bin/console server:stop komutunu girdiğinizde sunucuyu durdurmuş oluruz. Tarayacıda sayfayı yenilediğinizde hata sayfasını göreceksiniz.

Projemizin tüm rotalarını listeleyelim,
php bin/console debug:router bu komutun çıktısı olan tüm rotalar projemizde oluşmuş durumdadır. Mesela, tarayıcınızda localhost:8000/_profiler dizinine giderseniz gelen istekleri ve dönen durum kodlarını vs. görebilirsiniz.

Devamı için tıklayın.

--

--