Giriş Yap / Kayıt Ol

WM Aracı'na üyelikler tekrar açıldı! Kayıt olmak için TIKLAYIN!

4Beğeni
  • 1 Yazan emirbugra
  • 3 Yazan YORÇI

Cevap Yaz Favorilerime Ekle
Seçenekler Stil
Geri Git   Forum > > PHP

Birisi yield olayını anlaşılır bir şekilde anlatabilir mi?

  #1  
Okunmamış 07 Nisan 2021, 16:03
emirbugra Adlı Üyenin Avatarı
Laravel, Flutter, ReactJS
 
Üyelik Tarihi: 14 Ocak 2014
Yaş / Cinsiyet: 32 / Erkek
Konum: İzmir
Ad, Soyad: Em... Kö...
Mesajlar: 132
Beğeniler: 14 / 21
Ticaret: 3, 100%
arkadaşlar yıllardır php kullanırım, oop, design pattern, laravel, lumen, symfony vs gibi yöntemlerle her türlü problemi çözüyorum ama phpnin derinliklerinde yatan çok çılgın özellikler var. reflection, reactphp, swoole falan derken birkaç yerde yield diye birşey gördüm ve memory'yi acayip verimli kullanması sebebiyle çok ilgimi çekti

internette çok araştırdım, hem ingilizce hem türkçe dökümanları okudum ama hiçbirisi bu yield olayının mantığını tam olarak anlatmıyor. sadece kullanım şeklini anlatıyor. benim lanet olası bir huyum var. birşeyi kullanmak tamam ama onun mantığını acayip merak ederim. örneğin "return" olayının mantığını biliyorum, lisedeyken assembly dersini görüyorduk ve bir fonksiyonun başka bir fonksiyona değer döndermesi olayının nasıl olduğunu falan anlamıştım. aynı şekilde recursive fonksiyonlar, classlar vs hepsinin mantığını anlayabiliyorum ama bu yield'in mantığını bir türlü anlayamıyorum.

şimdi yield şöyle kullanılır böyle kullanılır şeklinde değil de yield yazdığımızda php çekirdeği nasıl davranıyor, bu işin şeması algoritması bilmemnesi nedir falan bunları merak ediyorum. yield'in nasıl kullanıldığını ve memory'yi verimli kullanılması gibi özelliklerinin olduğunu zaten biliyorum bunları tekrar buraya yazmanıza gerek yok. yield yazınca arkaplanda neler oluyor bana o lazım. işin mantığını anlatan olmazsa en sonunda php çekirdeğini indirip kodları okuyup mantığı kendim çözüp buraya yazarım artık. teşekkürler.
deeprock2 bunu beğendi.
  #2  
Okunmamış 07 Nisan 2021, 17:29
YORÇI Adlı Üyenin Avatarı
yorci.com
 
Üyelik Tarihi: 06 Şubat 2016
Cinsiyet: Erkek
Konum: Ankara
Ad, Soyad: Iş... Ya...
Mesajlar: 304
Beğeniler: 127 / 88
Ticaret: 20, 100%
php'de "yield" generator olarak geçer kabaca iterator sınıfının basitleştirilmiş halini içerir yaptığı iş de iterate etmektir, yazdığınız logic'e iteration sınıfını implement etmek yerine yield ile kabaca aynı işlevselliği sağlayabilirsiniz, tabi yapmaya çalıştığınız şeye göre değişir.

Temel mantığı şudur; klasik yöntemde bir döngüye alınacak objeler önceden memory'e atılır ve döngü süresince index'ine göre memoryden okunarak işlem yapılır, döngü bitene kadar da memory allocate edilir.
Iteration ise tüm veriyi memory'e yazmak ve indexine göre sorgulamak yerine yalnızca işlemdeki index'i memory'e yazar ve bir sonraki işlemde hem memory'i hem de fonksiyon içinde kullanılacak veriyi günceller dolayısıyla memory kullanımı dramatik şekilde düşer, işlenecek veri azaldığı için hız artar.
deeprock2, emirbugra ve salihbey24 bunu beğendi.
Cevap Yaz Favorilerime Ekle

1113x90

Bu Alana Reklam Ver



Konuyu toplam 1 kişi okuyor. (0 üye ve 1 Ziyaretçi)
 
Seçenekler
Stil
Normal Normal

Geri Git   Forum > PHP


Yetkileriniz
Konu açma yetkiniz: Yok
Cevap Yazma Yetkiniz Yok
Eklenti yükleme yetkiniz: Yok
Mesajınızı değiştirme yetkiniz: Yok

BB code: Açık
İfadeler: Açık
[IMG] Kodları: Açık
HTML kodu: Kapalı





Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şu anki Zaman: 05:30.