1 Ocak 2012 Pazar

PHP ve Framework üzerine - Symfony 2, 4/...

Tekrar merhaba,
Öğrendikçe ısınılan, ısınıldıkça vazgeçilmez olan, vezgeçilmez oldukça daha çok öğrenme arzusu duyurtan Symfony2 ile ilgili yazmaya devam ediyorum... Vay anasını sayın seyirciler...

En son kurulum yaparak symfony2 ile ilgili ilk adımları nasıl atacağımıza özet te olsa bakmıştık.
Buradan dikkat edilmesi gereken noktalar var bunlardan bahsetmeden geçmek sanırım incelediğim bloglarda sinir bozucu bulduğum bazı şeyleri benimde tekrarlamam anlamına geleceğinden,
en başında şunları söylemekte fayda var.

- Konfigürasyon dosyalarınızda, yml vb. boşluklara mutalaka dikkat edin. Tab yerine boşluklar kullanın. Canınız sıkılabilir.

- Direk yml ile entity oluşturuluyormuş hadi yapalım yerine önceden bildiğiniz yönetemlerden gelerek çalışın. Yani veritabanından entitiyleri oluşturmanında yolu var. Önce bunu deneyebilirsiniz. How to generate Entities from an Existing Database işi tersten yapmak böyle bişey :)
Saatlerinizi kurtarabilirsiniz.

- Tamam anladım hadi yapalım deyip yola koyulmadan önce mutlaka dökümanı inceleyin bi çok angaryadan kurtulmuş olacağınıza garanti verebilirim. Heleki daha önce code generator, ve bu tarz çatı yapılar üzerinde çalışmadıysanız...

- Baştan bütün projenizi belirleyin.
İnanın plan yapmak herzaman yolun yarısını bitiriyor. Sonradan düzenleriz not al abi bunu pek burda işe yaramaz... (Tecrübe ... )

Bu küçük naçiz tavsiyelerden sonra gelelim Kurulum sonrası işlemlerin ilk adımına
Bu bölümü ikiye ayırmak istiyorum...
1. Bölüm Bundle diye tabir edilen Uygulama parçaları konfigürasyonları
2. Bölüm kendi yazdığımız bundle veya uygulama konfigürasyonları.
Tabi burda başlık atmak kolay da ayrıntıda işin içyüzü hiçte öyle değil..

Symfony2 de beni ençok şaşırtan konfigürayonların (Kernel,autoload,config gibi dosyaların) elle düzenleniyor olması... Önceki sürümlerinde bu şekilde olması kabule dilebilir.
Fakat şunu kabul etmek lazımki bir ofis içerisinde Symfony geliştiriclerle çalışmayan insanların sadece referans dökümanı verielrek bişeyler yapmasını beklemek kadar zorlayıcı bir tutum olamaz.

Mutlak bir arabirim olmalı, Uygulama,Bundle vs. ayarları buradan yapılabilmeli.

Bunların bi kısmının yerine getirilebildiği Console denilen bir arabirim ile birçok şey yapmak mümkün. Evet sanırım buradan başlayabiliriz...

Console :
Şimdi size anlamsız gelebilecek, ilk bakıştada çok yabancılık çekeceğinizi düşündüğüm konsole ekranının bir kısmını buraya yapıştırarak konuya başlayabilrim. Bi yerden girmek lazım.
Öncelikle konsol kullanabilmek için (windows kullandığınızı varsayıyorum ) php.exe path tanımları içinde yer alması gerekiyor.

Symfony klasörünün içerinde php app/console komutu girildiğinde karşınıza versiyon bilgileri ve komutları listeleyen ekran gelicek.

!!! Bu konuları daha düzenli yazabilmek için bi yol bulmak lazım... Blogger dan nefret ediyorum.. Kod yazmak ve renklendirmek konusunda hiç iyi değil :(

bi sonraki yazıda görüşmek üzere... Umarım birilerinin işine yarar...

2 yorum:

Sedat KOCADOĞAN dedi ki...

"Direk yml ile entity oluşturuluyormuş hadi yapalım yerine önceden bildiğiniz yönetemlerden gelerek çalışın. Yani veritabanından entitiyleri oluşturmanında yolu var. Önce bunu deneyebilirsiniz. How to generate Entities from an Existing Database işi tersten yapmak böyle bişey :)
Saatlerinizi kurtarabilirsiniz.
"

Öncelikle yaml üzerinden entity oluşturmak Symfony2'de oldukça sıkıntılı bir iş. Bunun en güzel tarafı Entity Class'larını tasarladıktan sonra konsol üzerinden entity 'leri generate etmek hem getter setter'lar daha sorunsuz oluştur. Ondan sonra db üzerinde güncellemeleri konsol üzerinden yapmak.

Eğer önceden oluşmuş bir db var ise -kişisel tecrübem - genellikle Symfony üzerindeki relationlar önceden hazırlanmış bir DB'de asla olmuyor. Bu yüzden önceden hazırlanmış bir DB'den import yapmak aslında uygulamada o kadar da kolay değil.Bu özelliği var ama...

KANPINAR dedi ki...

Başlangıç için... ;)
Symfony ile ilgisi olmayan Doctrine ve propel in zorluklarını framework e yüklemek anlamsız olacağından böyle bir tavsiye yazdım.
Maksat birilerinin zamanını kurtarmak. Yol alabilmelerini sağlamak.
Umarım birileri istifade etmiştir.