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.

Olay Güdümlü Programlama

689 views

Published on

Olay güdümlü programlama yaklaşımının gerçek hayattaki yeri ve laravel implementasyonu ile ilgili PHPKonf #005 meetup sunumum.

Published in: Technology
  • Be the first to comment

Olay Güdümlü Programlama

  1. 1. Olay Güdümlü Programlama İbrahim Gündüz 2015 @ PHPKonf Meetup #05
  2. 2. İ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/
  3. 3. TeoriNedir - Felsefe - Avantajlar / Dezavantajlar
  4. 4. ● ● Olay Güdümlü Programlama Nedir ? Program akışının kullanıcı tarafından tetiklenen senkron veya asenkron olaylarla yönetilmesidir.
  5. 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. 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. 7. Olay Güdümlü Programlama Olay Güdümlü Programlama != Gözlemci Tasarım Deseni
  8. 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. 9. Gerçek Dünyaya DönüşElektronik Ticaret Uygulamalarında Olay Güdümlü Programlama
  10. 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. 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. 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. 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. 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. 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. 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. 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. 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.
  19. 19. Laravel ve Olay Güdümlü Programlama
  20. 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
  21. 21. Örnek Uygulama
  22. 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. 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. 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. 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
  26. 26. Sorular ?
  27. 27. http://tr.linkedin.com/in/ibrahimgunduz https://github.com/ibrahimgunduz34 https://twitter.com/ibrahimgunduz34 ibrahimgunduz34@gmail.com http://www.ibrahimgunduz.net/ Teşekkürler

×