SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
Olay Güdümlü
Programlama
İbrahim Gündüz
2015 @ PHPKonf Meetup #05
İbrahim GündüzYazılım Geliştirici
http://tr.linkedin.com/in/ibrahimgunduz
https://github.com/ibrahimgunduz34
https://twitter.com/ibrahimgunduz34
ibrahimgunduz34@gmail.com
http://www.ibrahimgunduz.net/
TeoriNedir - Felsefe - Avantajlar / Dezavantajlar
●
●
Olay Güdümlü Programlama
Nedir ?
Program akışının kullanıcı tarafından
tetiklenen senkron veya asenkron olaylarla
yönetilmesidir.
●
●
Olay Güdümlü Programlama
Felsefe ?
● Ana programın yalınlaştırarak temel
işlevleri yerine getirir. Yan işlevler olay
dinleyicilerin sorumluluğundadır
● Olaylar senkron / asenkron olabilir.
● Senkron olaylar kendi aralarında
önceliklendirilebilir.
● Olayın gerçekleştiği yer dinleyicilerin ne
yapacağı ile ilgilenmez.
●
●
Olay Güdümlü Programlama
Avantajlar
● Program kodunun yalınlaşması
● Olayın gerçekleştiği yer ile aksiyon
alınan yer arasında izolasyon
sağlanması.
● Esneklik
Dezavantajlar
● Dinleyici sayısı arttıkça öncelik önem
kazanır
● Hata gidermek daha güçtür
● Birbirleriyle etkileşim halinde olan
asenkron dinleyiciler büyük problemlere
neden olabilir.
Olay Güdümlü Programlama
Olay Güdümlü Programlama
!=
Gözlemci Tasarım Deseni
●
●
Olay Güdümlü Programlama
Bağımsız Bileşenler
● Symfony Event Dispatcher
Component
symfony/event-dispatcher
● Zend Framework 2 Event
Manager zendframework/zend-
eventmanager
Web Çatıları:
● Symfony2
● Zend Framework 2
● Laravel
● Yii2
● Phalcon
Gerçek Dünyaya DönüşElektronik Ticaret Uygulamalarında Olay Güdümlü Programlama
Arama ve Filtreleme
● Arama servisine istek gönderilir.
● Dönen sonuçlar veritabanından
okunur.
● Kullanıcının neyi aradığı, neleri
filtrelediği ile ilgili istatistiksel
veriler saklanır.
Olaylar:
● Ürün Araması Yapıldı
Ürün İnceleme
● Ürün detay verisi veritabanından/ön
bellekten okunur.
● Kullanıcının incelediği ürün
detayı ile ilgili veriler dönüşüm
oranları, ürüne olan ilgi gibi
istatistiksel veriler saklanır.
Olaylar:
● Ürün detayı ziyaret edildi
Ürünün Sepete Eklenmesi
● Ürün, bellekte kullanıcı sepeti olarak
rezerve edilen alanda saklanır.
● Sepete eklenen aded kadar ürün
stokda rezerve edilir.
● Rezervasyondan sonra stokta kalan
ürün adedi sıfırsa diğer kullanıcıların
bundan haberdar olması sağlanır.
(Bu ürün başkasının sepetinde)
● İstatistiksel veriler saklanır.
● Kullanıcı sepete kampanyadaki
ayakkabıyı set ettiği için sepete
indirim eklenir.
● Sepet içeriği değiştiği için toplam,
kdv, indirim ve genel toplam tutarları
baştan hesaplanır.
Olaylar:
● Sepete Ürün Eklendi
● Sepete ürün adedi değişti
● Sepet İçeriği Değişti
Ürün Adedinin Değiştirilmesi
● Seçilen ürünün sepetteki adedi
güncellenir.
● Sepete değişen aded kadar ürün
stokda rezerve edilir.
● Rezervasyondan sonra stokta kalan
ürün adedi sıfırsa diğer kullanıcıların
bundan haberdar olması sağlanır.
(Bu ürün başkasının sepetinde)
● İstatistiksel veriler saklanır.
● Sepet içeriği değiştiği için toplam,
kdv, indirim ve genel toplam tutarları
baştan hesaplanır.
Olaylar:
● Sepete ürün adedi değişti
● Sepet İçeriği Değişti
Kasa Önü Fırsatı Kullanımı
● Kullanıcı ayakkabı için kendisine
önerilen ayakkabı bakım ürününü
sepete ekler.
● Ayakkabı bakım ürünü için stok
rezervasyonu yapıılır.
● İstatiksel veriler saklanır.
● Sepet içeriği değiştiği için toplam,
kdv, indirim ve genel toplam tutarları
baştan hesaplanır.
Olaylar:
● Sepete Ürün Eklendi
● Sepete ürün adedi değişti
● Sepet İçeriği Değişti
●
İndirim Kuponu Kullanımı
● Kuponun müsaitlik durumu kontrol
edilir.
● Kupon sepete dahil edilir.
● Kupon kodu rezerve edilir.
● Sepet içeriği değiştiği için toplam,
kdv, indirim ve genel toplam tutarları
baştan hesaplanır.
Olaylar:
● Sepet İçeriği Değişti
Teslimat adresinin seçilmesi
● Kullanıcı ürünün teslim edileceği
adresi seçer. Bilgiler siparişe
iliştirilir.
● Kullanıcının seçtiği teslimat adresine
uygun kargo şirketlerinin tahmini
teslimat tarihindeki müsaitlik durumu
için rezervasyon yapılır.
Olaylar:
● Adres değişti
Ödeme Sayfası
● Kullanıcı ödeme metodunu kredi
kartı olarak seçti.
○ Ödeme metodu değiştiği için
kullanıcıya ödeme metoduna
uygun argümanlar, banner vs.
frontend objeleri görüntülendi.
● Kullanıcı ödeme argümanlarını
girdi
○ Ödeme ekranında gerekli
alanlar sıfırlandı/gizlendi.
○ Ödeme argümanları değiştiği
için backend tarafına istek
gönderilerek kullanıcının kart
tipi bilgisi belirlendi.
○ Kartipine uygun kart ve banka
ve altyapı logoları
görüntülendi.
○ Kart tipine uygun taksit
seçenekleri görüntülendi.
Olaylar:
● Ödeme tipi değişti
● Ödeme argümanları değişti
● Ödeme Metodu değişti
● Taksit değişti
Ödeme Süreci
● İlgili servis sağlaycıyıa ödeme
isteği gönderildi.
○ Ödeme süreci başarıyla
tamamlandı.
■ Sepet, siparişe
dönüştürüldü.
■ Banka haberleşmesi ile
ile ilgili veirler saklandı.
■ Deponun satıştan
haberdar olması için
ERP de satış siparişi
oluşturulması için servis
isteği gönderildi.
■ İstatistiksel veriler
saklandı.
○ Ödeme süreci başarısız oldu.
■ Banka haberleşmesi ile
ile ilgili veirler saklandı.
■ İstatistiksel veriler
saklandı.
Olaylar:
● Ödeme süreci başarıyla
tamamlandı
● Ödeme süreci başarısız oldu
● Sipariş oluşturuldu.
Laravel
ve
Olay Güdümlü Programlama
Neler Var ?
● Sınıf ve fonksiyon tabanlı olay
dinleyicileri
● Olay üyeleri
● Kuyruklanabilir Olay İşleyiciler
● CLI araçları
● Önceliklendirilebilirlik
Laravel ve Olay Güdümlü Programlama
Örnek Uygulama
●
Laravel ve Olay Güdümlü Programlama
Ne Yapıyoruz ?
Kullanıcı oturum açtığında tarayıcıya
flash message basacağız.
Yan Taraftaki Nedir ?
● Olay ile ilgili argümanları, olay
yerinden dinleyiciye
aktaracağımız Event sınıfını
oluşturuyoruz.
app/Events/AuthLogin.php
●
Laravel ve Olay Güdümlü Programlama
Olay Dinleyicisi Oluşturuyoruz
● Olay tetiklendiğinde çağırılacak
yeni bir olay işleyici sınıfı
oluşturuyoruz.
● Olay gerçekleştiğinde kullanıcı
oturumunun başarılı veya
başarısız olma durumuna göre
session nesnesine olumlu yada
olumsuz flash message
ekleyeceğiz.
app/Handlers/Events/AuthLoginHandler.php
●
Laravel ve Olay Güdümlü Programlama
Olay Dinleyicisini Kayıt Ediyoruz
● Yeni oluşturduğumuz olay
işleyicisini auth.login olayını
üyesi olması için Laravel 5
tarafından sağlanan
EventServiceProvider a kayıt
ediyoruz.
app/Providers/EventServiceProvider.php
●
Laravel ve Olay Güdümlü Programlama
Olayı tetikliyoruz
● Kullanıcı login isteği yaptığında
oturum açtıktan sonra auth.login
olayını tetikliyoruz.
app/Http/Controllers/UserController.php
Sorular ?
http://tr.linkedin.com/in/ibrahimgunduz
https://github.com/ibrahimgunduz34
https://twitter.com/ibrahimgunduz34
ibrahimgunduz34@gmail.com
http://www.ibrahimgunduz.net/
Teşekkürler

Más contenido relacionado

Destacado

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 

Destacado (20)

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 

Olay Güdümlü Programlama

  • 3. TeoriNedir - Felsefe - Avantajlar / Dezavantajlar
  • 4. ● ● Olay Güdümlü Programlama Nedir ? Program akışının kullanıcı tarafından tetiklenen senkron veya asenkron olaylarla yönetilmesidir.
  • 5. ● ● Olay Güdümlü Programlama Felsefe ? ● Ana programın yalınlaştırarak temel işlevleri yerine getirir. Yan işlevler olay dinleyicilerin sorumluluğundadır ● Olaylar senkron / asenkron olabilir. ● Senkron olaylar kendi aralarında önceliklendirilebilir. ● Olayın gerçekleştiği yer dinleyicilerin ne yapacağı ile ilgilenmez.
  • 6. ● ● Olay Güdümlü Programlama Avantajlar ● Program kodunun yalınlaşması ● Olayın gerçekleştiği yer ile aksiyon alınan yer arasında izolasyon sağlanması. ● Esneklik Dezavantajlar ● Dinleyici sayısı arttıkça öncelik önem kazanır ● Hata gidermek daha güçtür ● Birbirleriyle etkileşim halinde olan asenkron dinleyiciler büyük problemlere neden olabilir.
  • 7. Olay Güdümlü Programlama Olay Güdümlü Programlama != Gözlemci Tasarım Deseni
  • 8. ● ● Olay Güdümlü Programlama Bağımsız Bileşenler ● Symfony Event Dispatcher Component symfony/event-dispatcher ● Zend Framework 2 Event Manager zendframework/zend- eventmanager Web Çatıları: ● Symfony2 ● Zend Framework 2 ● Laravel ● Yii2 ● Phalcon
  • 9. Gerçek Dünyaya DönüşElektronik Ticaret Uygulamalarında Olay Güdümlü Programlama
  • 10. Arama ve Filtreleme ● Arama servisine istek gönderilir. ● Dönen sonuçlar veritabanından okunur. ● Kullanıcının neyi aradığı, neleri filtrelediği ile ilgili istatistiksel veriler saklanır. Olaylar: ● Ürün Araması Yapıldı
  • 11. Ürün İnceleme ● Ürün detay verisi veritabanından/ön bellekten okunur. ● Kullanıcının incelediği ürün detayı ile ilgili veriler dönüşüm oranları, ürüne olan ilgi gibi istatistiksel veriler saklanır. Olaylar: ● Ürün detayı ziyaret edildi
  • 12. Ürünün Sepete Eklenmesi ● Ürün, bellekte kullanıcı sepeti olarak rezerve edilen alanda saklanır. ● Sepete eklenen aded kadar ürün stokda rezerve edilir. ● Rezervasyondan sonra stokta kalan ürün adedi sıfırsa diğer kullanıcıların bundan haberdar olması sağlanır. (Bu ürün başkasının sepetinde) ● İstatistiksel veriler saklanır. ● Kullanıcı sepete kampanyadaki ayakkabıyı set ettiği için sepete indirim eklenir. ● Sepet içeriği değiştiği için toplam, kdv, indirim ve genel toplam tutarları baştan hesaplanır. Olaylar: ● Sepete Ürün Eklendi ● Sepete ürün adedi değişti ● Sepet İçeriği Değişti
  • 13. Ürün Adedinin Değiştirilmesi ● Seçilen ürünün sepetteki adedi güncellenir. ● Sepete değişen aded kadar ürün stokda rezerve edilir. ● Rezervasyondan sonra stokta kalan ürün adedi sıfırsa diğer kullanıcıların bundan haberdar olması sağlanır. (Bu ürün başkasının sepetinde) ● İstatistiksel veriler saklanır. ● Sepet içeriği değiştiği için toplam, kdv, indirim ve genel toplam tutarları baştan hesaplanır. Olaylar: ● Sepete ürün adedi değişti ● Sepet İçeriği Değişti
  • 14. Kasa Önü Fırsatı Kullanımı ● Kullanıcı ayakkabı için kendisine önerilen ayakkabı bakım ürününü sepete ekler. ● Ayakkabı bakım ürünü için stok rezervasyonu yapıılır. ● İstatiksel veriler saklanır. ● Sepet içeriği değiştiği için toplam, kdv, indirim ve genel toplam tutarları baştan hesaplanır. Olaylar: ● Sepete Ürün Eklendi ● Sepete ürün adedi değişti ● Sepet İçeriği Değişti
  • 15. ● İndirim Kuponu Kullanımı ● Kuponun müsaitlik durumu kontrol edilir. ● Kupon sepete dahil edilir. ● Kupon kodu rezerve edilir. ● Sepet içeriği değiştiği için toplam, kdv, indirim ve genel toplam tutarları baştan hesaplanır. Olaylar: ● Sepet İçeriği Değişti
  • 16. Teslimat adresinin seçilmesi ● Kullanıcı ürünün teslim edileceği adresi seçer. Bilgiler siparişe iliştirilir. ● Kullanıcının seçtiği teslimat adresine uygun kargo şirketlerinin tahmini teslimat tarihindeki müsaitlik durumu için rezervasyon yapılır. Olaylar: ● Adres değişti
  • 17. Ödeme Sayfası ● Kullanıcı ödeme metodunu kredi kartı olarak seçti. ○ Ödeme metodu değiştiği için kullanıcıya ödeme metoduna uygun argümanlar, banner vs. frontend objeleri görüntülendi. ● Kullanıcı ödeme argümanlarını girdi ○ Ödeme ekranında gerekli alanlar sıfırlandı/gizlendi. ○ Ödeme argümanları değiştiği için backend tarafına istek gönderilerek kullanıcının kart tipi bilgisi belirlendi. ○ Kartipine uygun kart ve banka ve altyapı logoları görüntülendi. ○ Kart tipine uygun taksit seçenekleri görüntülendi. Olaylar: ● Ödeme tipi değişti ● Ödeme argümanları değişti ● Ödeme Metodu değişti ● Taksit değişti
  • 18. Ödeme Süreci ● İlgili servis sağlaycıyıa ödeme isteği gönderildi. ○ Ödeme süreci başarıyla tamamlandı. ■ Sepet, siparişe dönüştürüldü. ■ Banka haberleşmesi ile ile ilgili veirler saklandı. ■ Deponun satıştan haberdar olması için ERP de satış siparişi oluşturulması için servis isteği gönderildi. ■ İstatistiksel veriler saklandı. ○ Ödeme süreci başarısız oldu. ■ Banka haberleşmesi ile ile ilgili veirler saklandı. ■ İstatistiksel veriler saklandı. Olaylar: ● Ödeme süreci başarıyla tamamlandı ● Ödeme süreci başarısız oldu ● Sipariş oluşturuldu.
  • 20. Neler Var ? ● Sınıf ve fonksiyon tabanlı olay dinleyicileri ● Olay üyeleri ● Kuyruklanabilir Olay İşleyiciler ● CLI araçları ● Önceliklendirilebilirlik Laravel ve Olay Güdümlü Programlama
  • 22. ● Laravel ve Olay Güdümlü Programlama Ne Yapıyoruz ? Kullanıcı oturum açtığında tarayıcıya flash message basacağız. Yan Taraftaki Nedir ? ● Olay ile ilgili argümanları, olay yerinden dinleyiciye aktaracağımız Event sınıfını oluşturuyoruz. app/Events/AuthLogin.php
  • 23. ● Laravel ve Olay Güdümlü Programlama Olay Dinleyicisi Oluşturuyoruz ● Olay tetiklendiğinde çağırılacak yeni bir olay işleyici sınıfı oluşturuyoruz. ● Olay gerçekleştiğinde kullanıcı oturumunun başarılı veya başarısız olma durumuna göre session nesnesine olumlu yada olumsuz flash message ekleyeceğiz. app/Handlers/Events/AuthLoginHandler.php
  • 24. ● Laravel ve Olay Güdümlü Programlama Olay Dinleyicisini Kayıt Ediyoruz ● Yeni oluşturduğumuz olay işleyicisini auth.login olayını üyesi olması için Laravel 5 tarafından sağlanan EventServiceProvider a kayıt ediyoruz. app/Providers/EventServiceProvider.php
  • 25. ● Laravel ve Olay Güdümlü Programlama Olayı tetikliyoruz ● Kullanıcı login isteği yaptığında oturum açtıktan sonra auth.login olayını tetikliyoruz. app/Http/Controllers/UserController.php