소개
PHP 5부터 객체의 보이는 모든 항목 목록을 반복할 수 있습니다. foreach를 사용하여 반복을 수행할 수 있습니다. 루프 및 반복자 상호 작용. IteratorAggregate도 있습니다. 이 용도로 사용할 수 있는 PHP 인터페이스
foreach 루프 사용
예시
<?php class myclass{ private $var; protected $var1; public $x, $y, $z; public function __construct(){ $this->var="private variable"; $this->var1=TRUE; $this->x=100; $this->y=200; $this->z=300; } public function iterate(){ foreach ($this as $key => $value) { print "$key => $value\n"; } } } $obj = new myclass(); foreach($obj as $key => $value) { print "$key => $value\n"; } echo "\n"; $obj->iterate(); ?>
출력
출력은 아래와 같습니다 -
x => 100 y => 200 z => 300 var => private variable var1 => 1 x => 100 y => 200 z => 300
반복자 인터페이스 사용
이 인터페이스는 다음 예제에서 구현될 다음 추상 메서드를 정의합니다.
abstract public current ( void ) : mixed abstract public key ( void ) : scalar abstract public next ( void ) : void abstract public rewind ( void ) : void abstract public valid ( void ) : bool
Iterator::current — 현재 요소를 반환합니다.
Iterator::key — 현재 요소의 키를 반환합니다.
Iterator::next — 다음 요소로 앞으로 이동
Iterator::rewind — Iterator를 첫 번째 요소로 되감습니다.
Iterator::valid — 현재 위치가 유효한지 확인합니다.
다음 예제는 Iterator 인터페이스를 구현하여 객체 반복을 보여줍니다.
예시
<?php class myclass implements Iterator{ private $arr = array('a','b','c'); public function rewind(){ echo "rewinding\n"; reset($this->arr); } public function current(){ $var = current($this->arr); echo "current: $var\n"; return $var; } public function key() { $var = key($this->arr); echo "key: $var\n"; return $var; } public function next() { $var = next($this->arr); echo "next: $var\n"; return $var; } public function valid(){ $key = key($this->arr); $var = ($key !== NULL && $key !== FALSE); echo "valid: $var\n"; return $var; } } $obj = new myclass(); foreach ($obj as $k => $v) { print "$k: $v\n"; } ?>
출력
위의 코드는 다음 결과를 생성합니다 -
rewinding valid: 1 current: a key: 0 0: a next: b valid: 1 current: b key: 1 1: b next: c valid: 1 current: c key: 2 2: c next: valid: