symfony2 & doctrine

Post on 17-Jul-2015

431 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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.

top related