Top Banner
Olay Güdümlü Programlama İbrahim Gündüz 2015 @ PHPKonf Meetup #05
27

Olay Güdümlü Programlama

Jan 23, 2018

Download

Technology

ibrahimgunduz34
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Olay Güdümlü Programlama

Olay Güdümlü Programlama

İbrahim Gündüz2015 @ PHPKonf Meetup #05

Page 2: Olay Güdümlü Programlama

İbrahim GündüzYazılım Geliştirici

http://tr.linkedin.com/in/ibrahimgunduz

https://github.com/ibrahimgunduz34

https://twitter.com/ibrahimgunduz34

[email protected]

http://www.ibrahimgunduz.net/

Page 3: Olay Güdümlü Programlama

TeoriNedir - Felsefe - Avantajlar / Dezavantajlar

Page 4: Olay Güdümlü Programlama

●Olay Güdümlü Programlama

Nedir ?

Program akışının kullanıcı tarafından tetiklenen senkron veya asenkron olaylarla yönetilmesidir.

Page 5: Olay Güdümlü Programlama

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

Page 6: Olay Güdümlü Programlama

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

Page 7: Olay Güdümlü Programlama

Olay Güdümlü Programlama

Olay Güdümlü Programlama!=

Gözlemci Tasarım Deseni

Page 8: Olay Güdümlü Programlama

●Olay Güdümlü Programlama

Bağımsız Bileşenler● Symfony Event Dispatcher

Componentsymfony/event-dispatcher

● Zend Framework 2 Event Manager zendframework/zend-eventmanager

Web Çatıları:● Symfony2● Zend Framework 2● Laravel● Yii2● Phalcon

Page 9: Olay Güdümlü Programlama

Gerçek Dünyaya DönüşElektronik Ticaret Uygulamalarında Olay Güdümlü Programlama

Page 10: 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ı

Page 11: Olay Güdümlü Programlama

Ü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

Page 12: Olay Güdümlü Programlama

Ü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

Page 13: Olay Güdümlü Programlama

Ü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

Page 14: Olay Güdümlü Programlama

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

Page 15: Olay Güdümlü Programlama

İ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

Page 16: Olay Güdümlü Programlama

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

Page 17: Olay Güdümlü Programlama

Ö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

Page 18: Olay Güdümlü Programlama

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

Page 19: Olay Güdümlü Programlama

Laravel ve

Olay Güdümlü Programlama

Page 20: 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

Page 21: Olay Güdümlü Programlama

Örnek Uygulama

Page 22: Olay Güdümlü Programlama

Laravel ve Olay Güdümlü ProgramlamaNe 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

Page 23: Olay Güdümlü Programlama

Laravel ve Olay Güdümlü ProgramlamaOlay 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

Page 24: Olay Güdümlü Programlama

Laravel ve Olay Güdümlü ProgramlamaOlay 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

Page 25: Olay Güdümlü Programlama

Laravel ve Olay Güdümlü ProgramlamaOlayı tetikliyoruz

● Kullanıcı login isteği yaptığında oturum açtıktan sonra auth.login olayını tetikliyoruz.

app/Http/Controllers/UserController.php

Page 26: Olay Güdümlü Programlama

Sorular ?

Page 27: Olay Güdümlü Programlama

http://tr.linkedin.com/in/ibrahimgunduz

https://github.com/ibrahimgunduz34

https://twitter.com/ibrahimgunduz34

[email protected]

http://www.ibrahimgunduz.net/

Teşekkürler