반응형
Web Development · PHP Iterator Pattern
이터레이터 패턴 —
Member 5명 + Members 컬렉션 + foreach 순회
memberclass + membersclass를 require_once로 결합
시작 오늘 분석할 코드
require_once 'memberclass.php'; require_once 'membersclass.php'; // 회원 5명 객체 생성 $member1 = new Member(1, "성1", "이름1", "e1@...", "p1"); $member2 = new Member(2, "성2", "이름2", "e2@...", "p2"); // ... 5명까지 $members = new Members; $members->add($member1); $members->add($member2); // ... 5번 add $iterator = $members->getIterator(); foreach($iterator as $member){ print $member->getId()." "; print $member->getLastname()." "; // ... 5개 필드 출력 }
1 성1 이름1 e1@example.com password1 2 성2 이름2 e2@example.com password2 3 성3 이름3 e3@example.com password3 4 성4 이름4 e4@example.com password4 5 성5 이름5 e5@example.com password5
1 디자인 패턴 — 이터레이터
이터레이터 패턴은 "내부 구조를 노출하지 않고 컬렉션을 순회"하게 해주는 디자인 패턴이다.
사용자는
foreach($iterator as $m)만 알면 된다. 내부가 배열인지, 트리인지, DB 결과인지 알 필요 없음.2 require_once로 클래스 결합
각 클래스를 별도 파일에 둔 후 사용 측에서 가져온다. 코드 분리 + 재사용성↑.
require_once 'memberclass.php'; // Member 클래스 정의 로드 require_once 'membersclass.php'; // Members 클래스 정의 로드 // 이제 두 클래스를 사용 가능
3 단축 — foreach 직접
사실 IteratorAggregate를 구현했으므로 getIterator()를 명시적으로 부를 필요 없다.
// 길게 $iterator = $members->getIterator(); foreach ($iterator as $m) { ... } // 짧게 (PHP가 자동 처리) foreach ($members as $m) { ... }
반응형
4 실무에서 유용한 응용
· DB 결과를 객체 컬렉션으로 감싸서 처리
· API 페이지네이션 — 자동으로 다음 페이지 로드
· 큰 파일을 한 줄씩 읽기 (메모리 절약)
· Generator로 대체 가능 (yield 키워드)
· API 페이지네이션 — 자동으로 다음 페이지 로드
· 큰 파일을 한 줄씩 읽기 (메모리 절약)
· Generator로 대체 가능 (yield 키워드)
핵심 한 줄 요약
이터레이터 패턴컬렉션 순회의 표준화
require_once클래스 정의 파일 로드 (중복 방지)
add()컬렉션에 객체 추가
getIterator()순회용 Iterator 반환
foreach자동으로 getIterator 호출 가능
ArrayIterator배열을 Iterator로 감싸는 PHP 클래스
현대 PHPGenerator·yield로 더 간결히
반응형
'php' 카테고리의 다른 글
| MySQL CREATE + INSERT — member 테이블 생성과 데이터 삽입 완전 정리 (0) | 2026.06.18 |
|---|---|
| MySQL DB Setting — XAMPP 환경 데이터베이스 초기 설정 완전 정리 (0) | 2026.06.18 |
| PHP IteratorAggregate — implements와 컬렉션 클래스 완전 정리 (0) | 2026.06.18 |
| PHP __construct — 생성자와 미구현 메서드 완전 정리 (0) | 2026.06.18 |
| PHP 개인테스트 — form + class + getter/setter 연동 완전 정리 (0) | 2026.06.18 |
왕진 블로그

댓글