Gerçek anlamda Symfony Framework üne bu yazımızda giriş yapacağız. Bir önce ki yazımda http://www.symfonydemo.com/ adresine gitmiştik ve bizi bir adet Welcome Sayfası karşılamıştı. Henüz kurulumu yeni yaptığımız için, henüz hiç Controller dosyamız olmadığı için bu sayfa symfony tarafından otomatik oluşturuldu. Symfony e giriş yapmadan önce hala yapmamız gereken bir kaç ufak değişiklikler. Bunlardan birtanesi kullandığımız IDE yi yani PHPStorm u ayarlamak. Bu ayarları yaptıktan sonra size kullanışlı Symfony Eklentiler inden bahsedeceğim. Ve bu Symfony Eklentiler inden bazılarını projemize dahil edeceğiz. Sonda söyleyeceğimi başta söyleyim, size tanıtacağım Symfony Eklentiler inden çok daha fazlası var, çok çok daha fazlası…
Symfony eklentilerini ikiye ayırabiliriz, bunlardan birincisi Symfony tarafından hazırlanan resmi eklentiler diyebiliriz. Bu Symfony Eklentiler e buradan ulaşabilirsiniz. İkincisi ise, diğer insanların hazırlamış olduğu Symfony Eklentiler i. Bunları da ihtiyacınıza göre zamanla zaten arayıp bulacaksınız. Buraya tıklayarak composer yardımıyla edinebileceğiniz, en popüler eklentilere ulaşabilirsiniz.
PHPStorm u kurduysanız, varsayılan olarak Symfony desteği ile gelmez, Yapacağımız işlem son derece basit. Symfony desteğini verebilmesi için gerekli olan eklentileri PHPStorm a kuracağız. Aşağıda ki resimleri sırasıyla büyütün, ne yapmamız gerektiğini anlayacaksınız ama yine de ben yapılması gerekenleri yazim. Eğer Daha önce PHPStorm u hiç çalıştırmadıysanız. Girişte sizden projenizi ya oluşturmanızı yada daha önce oluşturduysanız, projenizin konumunu ister. PHPStorm daha önce açtıysanız ve daha önce proje oluşturduysanız, PHPStorm u her açtığınız da varsayılan olarak bu projeyi açar. Önce projenizi kapatın. Bunu yapmak için : File menüsünden, Close Project yazan yere tıklayın. Sonra sırasıyla;
Aslında Symfony Web Skeleton da bu Symfony Eklentiler in bir kısmı zaten var. Biz yine de kuracağız. Amacım size Symfony Eklentiler ini tanıtmak.
Symfony ile kullanabileceğiz eklentilerden biri, Filesystem, Dosya ve Dizin işlemleri için ideal. Esaslı bir proje için olmazsa olmazlarımızdan, Kurulumu ise son derece basit. PHPStorm da aşağı kısımda Terminal yazan yere tıklayın.
Dizin konumu olarak bizim proje dizinimizi gösteriyor, bildiğiniz Windows komutlarından CMD, o kısma aşağıda ki satırı yapıştırın, enter tuşuna basın.
composer require symfony/filesystem
Faydalı diğer eklenti ise Finder, Arama ve Bulma işlemlerinde kullanırız. Bir dizin içerisinde sadece resim dosyalarını yada sadece xml dosyalarını bulabiliriz. Yada bir dizin ve altında ki tüm dizinlerde bu tarz işlemler yapabiliriz. Filesystem ve Finder bir birlerini tamamlayan eklentilerdir.
composer require symfony/finder
Bir diğer Symfony eklentisi ise Form. Form biraz garip. ( Eklentide bir sorun yok ) Bazı insanlar nefret eder, Bazı insanlar çok sever, geriye kalanlarının ise kafası karışıktır. Bende ilk başlarda Form eklentisine karşı mesafeleydim. Ama ne yalan söyleyim, kullandıkça Bayıldım!
composer require symfony/form
PHP de ki var_dump ın karşılığıdır, ama daha kullanışlısıdır.
composer require symfony/var-dumper
Konsol komutlarını çağırmak için kullanırız.
composer require symfony/process
PHP ile Tarih, Saat işlemlerini rahatlık la yöntebileceğimiz bir eklentidir kendileri.
composer require nesbot/carbon
Sonuncusu ise Bundle, Assetic Bundle. İyi kullanırsanız çok sağlam bir Bundle dır. Ne yazık ki Symfony 4 te bu eklenti/bundle kaldırıldı yerine Symfony Webpack Encore geldi. Çok daha gelişmişi ama ne yalan söyleyim Assetic Bundle ı özlemiyor değilim 🙂
Yanda ki resme tıklayın ve büyütün. Resme tıkladığınızda varsayılan olarak Symfony Dizin ve Dosyalarını(Dosyalardan bir kısmını) görürsünüz. Önemli bir iki dosyayı tanıtıp dizin yapısı hakkında size bilgi vereceğim. Mevcut hali ile bu gördükleriniz en minimumu.
Yukarıda da belirttiğim üzere ileride buraya fazladan dosya yada dizin gelecektir. Örneğin bir üyelik sistemi yazmak ister isek eğer, src dizinin altına Security dizinini oluştururuz.(Zorunluluk değil.)
Web sitemize ait assetlerimizi(css,js, sass,less ) tutulduğu dizin. Symfony Webpack Encore için kaynak dizindir. Webpack Encore css ve javascript dosyalarımızı sürekli izler ve biz bu dosyaları değiştirdikçe compile eder, public dizinine sıkıştırılmış şekilde atar.
Çalıştırılabilir, uygulamalar burada bulunur. (Örn: bin/console)
Konfigürasyon ayarlarımız burada bulunur. Genelde projemize dahil ettiğimiz eklentiler yüklendiklerinde FLEX yardımıyla, ilgili eklenti için “gerekiyorsa eğer” bir konfigürasyon dosyası oluşturulur ve varsayılan ilk ayarları yapılır. Yukarıda da belirttiğim üzere projemizin konfigürasyon ayarları burada bulunur. Burada yaptığımız ayarlar PROJEMİZİN GENELİNİ etkiler. config dizininde packages adlı bir dizin bulunur. Symfony e eklenti yüklersek eğer, eklentimize ait konfigürasyon/ayar(yaml) dosyaları burada bulunur.
Yine aynı şekilde ileride bir Servis yazmak istersek eğer services.yaml dosyasını kullanırız. services.yaml önemli dosyalarımızdan birisidir. packages dizini içerisinde bulunan şu dosyalarda önemlidir: Veritabanı işlemlerimiz için doctrine.yaml, Migration işlemlerimiz için doctrine_migrations.yaml, Symfony genel ayarlar için framework.yaml, Rota ayarlarımız için routing.yaml, Üyelik sistemi yazmak istersek eğer security.yaml, Mail gönderme işlemlerimiz için swiftmailer.yaml, Sitemiz yada uygulamamız birden fazla dil destekleyecek ise translation.yaml ve son olarakta Twig ayarlarımızı yaptığımız(Örneğin hızlıca Bootstrap desteği verebiliriz) twig.yaml önemli dosyalarımızdandır.
Projemizin web root dizinidir. index.php, favicon ve benzeri diğer dosyalar burada bulunur. Tabi diğer assetslerimiz de burada bulunur.(Tüm css,js,image dosyalarımız)
Projemizin kaynak dizinidir. Controller, Model,View, dosyalarımız burada bulunur. İlk kurulumdan sonra, bir kaç ayar yaparız. Sonra ise, zamanımızın yüzde 90 burada(src) dizininde geçer.
Symfony 4 te Twig Şablon dosyalarımız burada bulunur.
Unit/Otomatik testler içindir.
Üçüncü parti uygulamalar bu dizinde yer alır. Örneğin FosUserBundle
Eğer web sitemiz çoklu dil desteğine sahip ise, dil dosyalarımızın bulunacağı dizin.
Symfony tarafından oluşturulan dosyaların bulunduğu dizin ( Örn: cache, log vs )
Açıklamaya gerek var mı ?
Bu yazımı burada sonlandıracağım. Bir sonra ki yazım Routing ( Rotalar ) üzerine olacak. Umarım bu yazı sizin için faydalı olmuştur. Bir sonra ki makalemde görüşmek üzere.
Yukarıda ki tüm Symfony Component lerini tek seferde kurmak için aşağıda ki kodu çalıştırabilirsiniz;
composer require symfony/filesystem symfony/finder symfony/form symfony/var-dumper symfony/process nesbot/carbon