Bu kodu ne yapar?

2 Cevap php

Ben bir zend framework tabanlı e-posta proje üzerinde çalışıyorum ve ben bazı online kod örnekleri takip ediyorum .. Ben görünüşte bir e-posta iletisinin farklı 'parçaları' aracılığıyla döngüler bu kod satırı anlayamıyorum. Ben btw ve benim ayrıştırıcı doğru görünmüyor bazı hata alarak yere gidecekseniz zanlısı nasıl çalıştığını hiçbir fikrim yok.

foreach (new RecursiveIteratorIterator($mail->getMessage($i)) as $ii=>$part)

Yukarıdaki foreach döngüsü ne demek?

2 Cevap

Bu id $ i ile mesajın içeriğine göre yeni bir özyinelemeli yineleyici oluşturur ve e-posta parçaları ile döngüler. E-postalar, genellikle çok parçalı mesajlar oluşur, böylece GetMessage yöntem muhtemelen başlıklarını aldıktan sonra mesajın ilk bölümünü almak için bir çağrı vardır. Bölümünü almak için yöntem muhtemel dolayısıyla $ ii => $ parçası, parçası dönmek için artan bir id (yinelemeli) kendini çağırır.

Bu yöntem çağrısı tam içeriğini bilmeden genişletmek zordur.

Dizin yineleme için örnek

$dir = new RecursiveDirectoryIterator(".");
foreach(new RecursiveIteratorIterator($dir) as $file) {
  // find .txt files
  if (preg_match('/.txt$/i', $file->getFilename())) {
  }
}

EDIT 2: bağlantılı sitede örneği kullanarak:

$foundPart = null;
foreach (new RecursiveIteratorIterator($mail->getMessage(1)) as $part) {
        if (strtok($part->contentType, ';') == 'text/plain') {
            $foundPart = $part;
            break;
        }
}

Bu, tüm parçaları alır ve bir düz metin parçası arar. Bu dizinleri onun üzerinde manipülasyon sağlayan şey döngü bir yoludur.

Basit açısından deyim posta-> getMessage daha bir liste gibi yapmak için ağaç yapısını düzleştirme içeren tüm öğeleri yinelemenize.Ölçütlere.

(Ya da daha doğru olduğunu yineleyicileri içerebilir Yineleyicilerde) - recursive Yineleyicilerde bir ağaç geçerken için kullanılır. The RecursiveIteratorIterator class belgeler, özellikle de bunu açıklamak değil - ama örneklerle okuyun.