wmaraci reklam

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

2 Mesajlar 632 Okunma
pst.net
wmaraci reklam

emirbugra emirbugra Entrepreneur Kullanıcı
  • Üyelik 14.01.2014
  • Yaş/Cinsiyet 35 / E
  • Meslek Web ve Mobil Geliştirme
  • Konum İzmir
  • Ad Soyad E** K**
  • Mesajlar 210
  • Beğeniler 39 / 38
  • 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

kişi bu mesajı beğendi.

wmaraci
reklam

YORci YORci yorci.com Kullanıcı
  • Üyelik 06.02.2016
  • Yaş/Cinsiyet 29 / E
  • Meslek Arkaplan Yazılım
  • Konum Ankara
  • Ad Soyad I** Y**
  • Mesajlar 261
  • Beğeniler 88 / 127
  • Ticaret 21, (%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 salihbey24

kişi bu mesajı beğendi.

wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al