首頁 >後端開發 >php教程 >php生成器對象

php生成器對象

伊谢尔伦
伊谢尔伦原創
2016-11-23 09:06:441630瀏覽

當一個生成器函數被第一次調用,會返回一個內部Generator類的對象. 這個對像以和前台迭代器對象幾乎同樣的方式實現了Iterator 接口。

Generator 類別中的大部分方法和Iterator 介面中的方法有著相同的語意, 但是生成器物件還有一個額外的方法: send().

CautionGenerator 物件不能透過new實例化

Generator class

<?php
    class Generator implements Iterator {
        public function rewind(); //Rewinds the iterator. 如果迭代已经开始,会抛出一个异常。
        public function valid(); // 如果迭代关闭返回false,否则返回true.
        public function current(); // Returns the yielded value.
        public function key(); // Returns the yielded key.
        public function next(); // Resumes execution of the generator.
        public function send($value); // 发送给定值到生成器,作为yield表达式的结果并继续执行生成器.
    }
?>

Generator::send()

當進行迭代的時候Generator::send() 允許值注入到生成器方法中. 注入的值會從yield語句中返回,然後在任何使用生成器方法的變數中使用.

Example #2 Using Generator::send() to inject values

<?php
    function printer() {
        while (true) {
            $string = yield;
            echo $string;
        }
    }
    $printer = printer();
    $printer->send(&#39;Hello world!&#39;);
?>

以上例程會輸出:

Hello world!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:PHP SPL的使用下一篇:PHP SPL的使用