Iterable bir sözde-tür olup PHP 7.1'de eklendi. Traversable gerçeleyen bir nesne veya bir dizi kabul eder. Bu türlerin her ikisi de foreach kullanarak yinelenebilir ve yield from ile bir üreteç içinde kullanılabilir.
Yinelenebilir, bir işlevin bir değerler kümesi gerektirdiğini belirtmek için bir değiştirge türü olarak kullanılabilir. Fakat foreach ile kullanacağından değer kümesinin biçimini umursamaz. Eğer değer bir dizi veya bir Traversable örneği değilse bir TypeError yavrulanır.
Örnek 1 - Yinelenebilir değiştirge örneği
<?php
function foo(iterable $yinele) {
foreach ($yinele as $değer) {
// ...
}
}
?>
iterable türünde bildirilen değişirgeler NULL
veya
öntanımlı değer olarak bir dizi kullanabilir.
Örnek 2 - Yinelenebilir değiştirge için öntanımlı değer örneği
<?php
function foo(iterable $iterable = []) {
// ...
}
?>
Bir işlevin iterable türünde bir değerle döneceğini belirtmek için dönüş türü olarak kullanılabilir. Dönen değer bir dizi veya bir Traversable örneği değilse bir TypeError yavrulanır.
Örnek 3 - Yinelenebilir dönüş türü örneği
<?php
function bar(): iterable {
return [1, 2, 3];
}
?>
Dönüş türü olarak iterable bildiren bir işlev ayrıca, bir üreteç olarak da kullanılabilir.
Örnek 4 - Yinelenebilir üreteç dönüş türü örneği
<?php
function gen(): iterable {
yield 1;
yield 2;
yield 3;
}
?>
Genişletilen/gerçeklenen sınıflar, iterable türündeki değiştirgelerde veya iterable türündeki dönüş değerinde array veya Traversable kullanarak yöntemleri genişletebilir, dönüş değerlerini daraltabilir.
Örnek 5 - Yinelenebilir tür uygulama örneği
<?php
interface Örnek {
public function yöntem(array $dizi): iterable;
}
class ÖrnekGerçeklenim implements Örnek {
public function yöntem(iterable $yinele): array {
// Değiştirge genişletilir ve dönüş türü daraltılır
}
}
?>