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