SlideShare ist ein Scribd-Unternehmen logo
1 von 38
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,
● DoctrineOrmEntityRepository’den türer,
● Yaml ayar dosyalarında tanımlanır.
Tanımlama
Ş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
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.

Weitere ähnliche Inhalte

Andere mochten auch

Andere mochten auch (9)

Canakkale Destanı
Canakkale DestanıCanakkale Destanı
Canakkale Destanı
 
Bulutlar Üzerinde..
Bulutlar Üzerinde..Bulutlar Üzerinde..
Bulutlar Üzerinde..
 
PHPUnit ve Laravel
PHPUnit ve LaravelPHPUnit ve Laravel
PHPUnit ve Laravel
 
REST yoluyla Web Servis Geliştirme
REST yoluyla Web Servis GeliştirmeREST yoluyla Web Servis Geliştirme
REST yoluyla Web Servis Geliştirme
 
İlişkisel Veritabanı Sistemleri ve NoSQL
İlişkisel Veritabanı Sistemleri ve NoSQLİlişkisel Veritabanı Sistemleri ve NoSQL
İlişkisel Veritabanı Sistemleri ve NoSQL
 
Php MySQL
Php MySQLPhp MySQL
Php MySQL
 
Java script
Java scriptJava script
Java script
 
Linux sunum
Linux sunumLinux sunum
Linux sunum
 
Bulut Teknolojileri
Bulut TeknolojileriBulut Teknolojileri
Bulut Teknolojileri
 

Ähnlich wie Symfony2 & doctrine

Log yonetimi tecrubeleri
Log yonetimi tecrubeleriLog yonetimi tecrubeleri
Log yonetimi tecrubeleriErtugrul Akbas
 
KORELASYON GÖSTERMELİK DEĞİLDİR
KORELASYON GÖSTERMELİK DEĞİLDİRKORELASYON GÖSTERMELİK DEĞİLDİR
KORELASYON GÖSTERMELİK DEĞİLDİRErtugrul Akbas
 
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMISINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMIErtugrul Akbas
 
Maltepe Üniversitesi - Spring AOP
Maltepe Üniversitesi - Spring AOPMaltepe Üniversitesi - Spring AOP
Maltepe Üniversitesi - Spring AOPMimar Aslan
 
Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1Erkin Çakar
 
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORMAzerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORMMimar Aslan
 
Log Yönetimi SIEM Demek Değildir!
Log Yönetimi SIEM Demek Değildir!Log Yönetimi SIEM Demek Değildir!
Log Yönetimi SIEM Demek Değildir!Ertugrul Akbas
 
SIEM ÇÖZÜMLERİNDE TAXONOMY NE İŞE YARAR?
SIEM ÇÖZÜMLERİNDE TAXONOMY NE İŞE YARAR?SIEM ÇÖZÜMLERİNDE TAXONOMY NE İŞE YARAR?
SIEM ÇÖZÜMLERİNDE TAXONOMY NE İŞE YARAR?Ertugrul Akbas
 
Django Introduction
Django IntroductionDjango Introduction
Django IntroductionFatih Erikli
 
Oracle kursu-erzurum
Oracle kursu-erzurumOracle kursu-erzurum
Oracle kursu-erzurumsersld83
 
Python ornegi
Python ornegiPython ornegi
Python ornegisersld98
 
Veritabanı kurulumu (1)
Veritabanı kurulumu (1)Veritabanı kurulumu (1)
Veritabanı kurulumu (1)alinizam99
 
Python kursu-erzurum
Python kursu-erzurumPython kursu-erzurum
Python kursu-erzurumsersld93
 
ORM - Entitiy Relations.pdf
ORM - Entitiy Relations.pdfORM - Entitiy Relations.pdf
ORM - Entitiy Relations.pdfMahmut Bayrı
 
Bilgi Güvenliği ve Log Yönetimi Sistemlerinin Analizi
Bilgi Güvenliği ve Log Yönetimi Sistemlerinin AnaliziBilgi Güvenliği ve Log Yönetimi Sistemlerinin Analizi
Bilgi Güvenliği ve Log Yönetimi Sistemlerinin AnaliziErtugrul Akbas
 

Ähnlich wie Symfony2 & doctrine (20)

Log yönetimi ve siem
Log yönetimi ve siemLog yönetimi ve siem
Log yönetimi ve siem
 
Log yonetimi tecrubeleri
Log yonetimi tecrubeleriLog yonetimi tecrubeleri
Log yonetimi tecrubeleri
 
KORELASYON GÖSTERMELİK DEĞİLDİR
KORELASYON GÖSTERMELİK DEĞİLDİRKORELASYON GÖSTERMELİK DEĞİLDİR
KORELASYON GÖSTERMELİK DEĞİLDİR
 
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMISINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
 
Maltepe Üniversitesi - Spring AOP
Maltepe Üniversitesi - Spring AOPMaltepe Üniversitesi - Spring AOP
Maltepe Üniversitesi - Spring AOP
 
Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1Hackerspace PostgreSQL Atolyesi - 1
Hackerspace PostgreSQL Atolyesi - 1
 
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORMAzerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
Azerbaycan Qafqaz Üniversitesi - (Java Persistence API) JPA ve Hibernate ile ORM
 
Log Yönetimi SIEM Demek Değildir!
Log Yönetimi SIEM Demek Değildir!Log Yönetimi SIEM Demek Değildir!
Log Yönetimi SIEM Demek Değildir!
 
Ajansız log toplama
Ajansız log toplamaAjansız log toplama
Ajansız log toplama
 
Audit Policy
Audit PolicyAudit Policy
Audit Policy
 
SIEM ÇÖZÜMLERİNDE TAXONOMY NE İŞE YARAR?
SIEM ÇÖZÜMLERİNDE TAXONOMY NE İŞE YARAR?SIEM ÇÖZÜMLERİNDE TAXONOMY NE İŞE YARAR?
SIEM ÇÖZÜMLERİNDE TAXONOMY NE İŞE YARAR?
 
Django Introduction
Django IntroductionDjango Introduction
Django Introduction
 
Java EE Struts
Java EE StrutsJava EE Struts
Java EE Struts
 
Oracle kursu-erzurum
Oracle kursu-erzurumOracle kursu-erzurum
Oracle kursu-erzurum
 
Ozgur web-gunleri-sunum
Ozgur web-gunleri-sunumOzgur web-gunleri-sunum
Ozgur web-gunleri-sunum
 
Python ornegi
Python ornegiPython ornegi
Python ornegi
 
Veritabanı kurulumu (1)
Veritabanı kurulumu (1)Veritabanı kurulumu (1)
Veritabanı kurulumu (1)
 
Python kursu-erzurum
Python kursu-erzurumPython kursu-erzurum
Python kursu-erzurum
 
ORM - Entitiy Relations.pdf
ORM - Entitiy Relations.pdfORM - Entitiy Relations.pdf
ORM - Entitiy Relations.pdf
 
Bilgi Güvenliği ve Log Yönetimi Sistemlerinin Analizi
Bilgi Güvenliği ve Log Yönetimi Sistemlerinin AnaliziBilgi Güvenliği ve Log Yönetimi Sistemlerinin Analizi
Bilgi Güvenliği ve Log Yönetimi Sistemlerinin Analizi
 

Symfony2 & doctrine

Hinweis der Redaktion

  1. Örnek Uygulama https://packagist.org/packages/hasantayyar/gist-download