PHP 7.4.0RC4 Released!

Yinelenebilirler

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.

Yinelenebilirlerin kullanımı

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 [
123];
}

?>

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;
}

?>

Yinelenebilir Tür Uygulamaları

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
    
}
}

?>

add a note add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top