38
Symfony2 & Doctrine Symfony2 ve Doctrine ile ORM Yapısı @aybarscengaver - emre.xyz

Symfony2 & doctrine

Embed Size (px)

Citation preview

Page 1: Symfony2 & doctrine

Symfony2 & Doctrine

Symfony2 ve Doctrine ile ORM Yapısı

@aybarscengaver - emre.xyz

Page 2: Symfony2 & doctrine

● 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

Page 3: Symfony2 & doctrine

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.

Page 4: Symfony2 & doctrine
Page 5: Symfony2 & doctrine

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.

Page 6: Symfony2 & doctrine

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) .

Page 7: Symfony2 & doctrine

Kurulum

● https://getcomposer.org/

● composer create-project

symfony/framework-standard-edition

/path/project '~2.6'

Page 8: Symfony2 & doctrine
Page 9: Symfony2 & doctrine
Page 10: Symfony2 & doctrine

Kurulum

Symfony Standard Framework Edition ile Doctrine öntanımlı olarak yükleniyor.

Ayrı olarak projenize composer ile dahil edebilirsiniz.

Page 11: Symfony2 & doctrine

Kurulum

Ayarlar app/config/parameters.yml dosyası içerisine kurulum sırasında kaydedilir.

app/config/config.yml içerisinde doctrine ayarları güncellenebilir.

Page 12: Symfony2 & doctrine
Page 13: Symfony2 & doctrine

Kurulum

Kurulum tamamlandıktan sonra veritabanı oluşturulur.

Page 14: Symfony2 & doctrine

Örnek Uygulama

● Kullanıcı Veritabanı

● Ekleme / Silme / Listeleme

● Kullanıcıların yorumları

● Kullanıcıların rolleri

Page 15: Symfony2 & doctrine

● 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

Page 16: Symfony2 & doctrine

Yaml

Annotations

Page 17: Symfony2 & doctrine

XML

Page 18: Symfony2 & doctrine

Kullanıcı Tablosu Gruplar Tablosu Yorumlar Tablosu

Örnek Uygulama Tabloları

Page 19: Symfony2 & doctrine

Amaç

Page 20: Symfony2 & doctrine

Comment.orm.yml User.orm.yml Group.orm.yml

Page 21: Symfony2 & doctrine

Repository

● Ambar - Depo ,● Model dosyalarına karşılık gelir,● Doctrine\Orm\EntityRepository’den türer,● Yaml ayar dosyalarında tanımlanır.

Page 22: Symfony2 & doctrine

Tanımlama

Page 23: Symfony2 & doctrine

Ş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

Page 24: Symfony2 & doctrine

Entity ve Repository dosyaları oluşturuluyor.

Veritabanı ile Entity sınıfları eşleniyor.

Production işlerde --dump-sql

Page 25: Symfony2 & doctrine

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.

Page 26: Symfony2 & doctrine

Kullanıcı Oluşturma

Page 27: Symfony2 & doctrine

Kullanıcıya Yorum Ekleme

Page 28: Symfony2 & doctrine

Kullanıcıya Grup Ekleme

Page 29: Symfony2 & doctrine

Kullanıcıları Listeleme

Page 30: Symfony2 & doctrine

Kullanıcı Silme

Page 31: Symfony2 & doctrine

Kullanıcı Düzenleme

Page 32: Symfony2 & doctrine

Kullanıcı Filtreleme

Page 33: Symfony2 & doctrine

Repository Örnekleri

Page 34: Symfony2 & doctrine

Repository Örnekleri

Page 35: Symfony2 & doctrine

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.

Page 36: Symfony2 & doctrine

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.

Page 37: Symfony2 & doctrine

Lifecycle Callbacks

Basit işleri yakalamak için, aynı event’lara

entity’ler üzerinde tanımlanabilen metodlar.

Ayar dosyalarından (yml, annotation, xml)

tetiklenebilir.

Page 38: Symfony2 & doctrine

@aybarscengaver

emre.xyz

github.com/aybarscengaver

TŞK.