Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Symfony2 & doctrine

991 views

Published on

Symfony & doctrine

Published in: Technology
  • Be the first to comment

Symfony2 & doctrine

  1. 1. Symfony2 & Doctrine Symfony2 ve Doctrine ile ORM Yapısı @aybarscengaver - emre.xyz
  2. 2. ● 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
  3. 3. 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.
  4. 4. 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.
  5. 5. 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) .
  6. 6. Kurulum ● https://getcomposer.org/ ● composer create-project symfony/framework-standard-edition /path/project '~2.6'
  7. 7. Kurulum Symfony Standard Framework Edition ile Doctrine öntanımlı olarak yükleniyor. Ayrı olarak projenize composer ile dahil edebilirsiniz.
  8. 8. Kurulum Ayarlar app/config/parameters.yml dosyası içerisine kurulum sırasında kaydedilir. app/config/config.yml içerisinde doctrine ayarları güncellenebilir.
  9. 9. Kurulum Kurulum tamamlandıktan sonra veritabanı oluşturulur.
  10. 10. Örnek Uygulama ● Kullanıcı Veritabanı ● Ekleme / Silme / Listeleme ● Kullanıcıların yorumları ● Kullanıcıların rolleri
  11. 11. ● 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
  12. 12. Yaml Annotations
  13. 13. XML
  14. 14. Kullanıcı Tablosu Gruplar Tablosu Yorumlar Tablosu Örnek Uygulama Tabloları
  15. 15. Amaç
  16. 16. Comment.orm.yml User.orm.yml Group.orm.yml
  17. 17. Repository ● Ambar - Depo , ● Model dosyalarına karşılık gelir, ● DoctrineOrmEntityRepository’den türer, ● Yaml ayar dosyalarında tanımlanır.
  18. 18. Tanımlama
  19. 19. Şu aşamada ● 3 adet orm.yml uzantılı dosyamız var o User.orm.yml o Group.orm.yml o Comment.orm.yml ● İlişkileri kurulmuş durumda ● Repository sınıfları belirlendi
  20. 20. Entity ve Repository dosyaları oluşturuluyor. Veritabanı ile Entity sınıfları eşleniyor. Production işlerde --dump-sql
  21. 21. 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.
  22. 22. Kullanıcı Oluşturma
  23. 23. Kullanıcıya Yorum Ekleme
  24. 24. Kullanıcıya Grup Ekleme
  25. 25. Kullanıcıları Listeleme
  26. 26. Kullanıcı Silme
  27. 27. Kullanıcı Düzenleme
  28. 28. Kullanıcı Filtreleme
  29. 29. Repository Örnekleri
  30. 30. Repository Örnekleri
  31. 31. 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.
  32. 32. 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.
  33. 33. Lifecycle Callbacks Basit işleri yakalamak için, aynı event’lara entity’ler üzerinde tanımlanabilen metodlar. Ayar dosyalarından (yml, annotation, xml) tetiklenebilir.
  34. 34. @aybarscengaver emre.xyz github.com/aybarscengaver TŞK.

×