>백엔드 개발 >PHP 튜토리얼 >PHP 생성기 객체

PHP 생성기 객체

伊谢尔伦
伊谢尔伦원래의
2016-11-23 09:06:441625검색

생성기 함수가 처음 호출되면 내부 생성기 클래스의 객체를 반환합니다. 이 객체는 전면 반복기 객체와 거의 동일한 방식으로 Iterator 인터페이스를 구현합니다.

Generator 클래스의 메소드 대부분은 Iterator 인터페이스의 메소드와 동일한 의미를 갖지만 생성기 객체에는 send()라는 추가 메소드가 있습니다.

CautionGenerator 객체는 new를 전달할 수 없습니다. 인스턴스화

예제 #1 Generator 클래스

<?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()를 사용하면 값을 주입할 수 있습니다. into 생성기 메서드에서 주입된 값은 Yield 문에서 반환된 다음 생성기 메서드를 사용하여 모든 변수에 사용됩니다.

예제 #2 Generator::send()를 사용하여 값 삽입

<?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 사용