Upload
aybars-cengaver
View
431
Download
2
Embed Size (px)
Citation preview
Symfony2 & Doctrine
Symfony2 ve Doctrine ile ORM Yapısı
@aybarscengaver - emre.xyz
● ORM Nedir?
● Neden Kullanılmalı ?
● Doctrine Nedir ?
● Symfony2 ile kurulum
● Doctrine ayarları
● Örnek uygulama
o Kullanıcı / Yorumlar / Kullanıcı Grupları
o Kullanıcı Ekleme / Düzenleme / Silme
o Yorum Ekleme
o Kullanıcıya Rol Atama
● Doctrine Eventları
Flashforward
ORM Nedir?
ORM - Object Relational Mapping
Veritabanları ve nesne tabanlı yazılım dilleri
arasında veri dönüşümü sağlamak için
kullanılan bir yöntemdir.
Neden ?
1. Veritabanı bağımsızdır.
2. SQL Komutlarıyla uğraşmazsınız.
3. Güvenlik zâfiyetleri en az düzeydedir.
4. Kodunuzu temiz tutar.
5. Hızlı geliştirme yapmanızı sağlar.
Doctrine
1. 2006 yılından beri geliştiriliyor ,
2. SensioLabs tarafından,
3. 344 geliştirici ,
4. 2372 yıldız ,
5. v2.4.7 ,
6. En güçlü ORM (PHP için) .
Kurulum
● https://getcomposer.org/
● composer create-project
symfony/framework-standard-edition
/path/project '~2.6'
Kurulum
Symfony Standard Framework Edition ile Doctrine öntanımlı olarak yükleniyor.
Ayrı olarak projenize composer ile dahil edebilirsiniz.
Kurulum
Ayarlar app/config/parameters.yml dosyası içerisine kurulum sırasında kaydedilir.
app/config/config.yml içerisinde doctrine ayarları güncellenebilir.
Kurulum
Kurulum tamamlandıktan sonra veritabanı oluşturulur.
Örnek Uygulama
● Kullanıcı Veritabanı
● Ekleme / Silme / Listeleme
● Kullanıcıların yorumları
● Kullanıcıların rolleri
● Doctrine veritabanında bulunacak tabloları 3 farklı
formatta ayarlama imkanı sağlıyor.
○ “YAML” dil bağımsız bir veri değişim formatı
○ “XML” bir işaretleme dili
○ “Annotation” kodun akışını bozmayan,
yorumsatırına eklenen metadatalar
● Entity Generations
● Repositories
Doctrine
Yaml
Annotations
XML
Kullanıcı Tablosu Gruplar Tablosu Yorumlar Tablosu
Örnek Uygulama Tabloları
Amaç
Comment.orm.yml User.orm.yml Group.orm.yml
Repository
● Ambar - Depo ,● Model dosyalarına karşılık gelir,● Doctrine\Orm\EntityRepository’den türer,● Yaml ayar dosyalarında tanımlanır.
Tanımlama
Şu aşamada
● 3 adet orm.yml uzantılı dosyamız varo User.orm.ymlo Group.orm.ymlo Comment.orm.yml
● İlişkileri kurulmuş durumda● Repository sınıfları belirlendi
Entity ve Repository dosyaları oluşturuluyor.
Veritabanı ile Entity sınıfları eşleniyor.
Production işlerde --dump-sql
ORM
Görüldüğü gibi ORM yapısı veritabanına elinizi
sürmeden tabloları oluşturup ilişkilendirmenizi
hızlıca sağladı. Artık tüm veritabanı işlemlerinizi
Entity sınıfınızı kullanarak Repository sınıfları
içerisinde gerçekleştireceksiniz.
Kullanıcı Oluşturma
Kullanıcıya Yorum Ekleme
Kullanıcıya Grup Ekleme
Kullanıcıları Listeleme
Kullanıcı Silme
Kullanıcı Düzenleme
Kullanıcı Filtreleme
Repository Örnekleri
Repository Örnekleri
Doctrine Events
● LifeCycle Events olarak adlandırılıyor.
● Her işlem öncesinde, sonrasında, sırasında
işlemlere dahil olabilirsiniz.
● EventManager tarafından yönetilirler.
Doctrine Events
preRemove - EntityManager remove metodundan önce.
postRemove - EntityManager remove metodundan sonra.
prePersist - EntityManager persist metodundan önce.
postPersist - EntityManager persist metodundan sonra.
preUpdate - EntityManager ile yapılan update işleminden önce.
postUpdate - EntityManager ile yapılan update işleminden sonra.
postLoad - Veritabanından veriler Entity’ye yüklendikten sonra.
loadClassMetadata - Entity ayarları okunduktan sonra.
Lifecycle Callbacks
Basit işleri yakalamak için, aynı event’lara
entity’ler üzerinde tanımlanabilen metodlar.
Ayar dosyalarından (yml, annotation, xml)
tetiklenebilir.
@aybarscengaver
emre.xyz
github.com/aybarscengaver
TŞK.