PHP PHP에서 SPL 자료구조 적극 활용하기
페이지 정보

영삼이
본문
✅ PHP에서 SPL 자료구조 적극 활용하기
PHP에는 자주 사용되지 않지만 매우 강력한 SPL(표준 PHP 라이브러리) 자료구조 클래스들이 내장되어 있습니다. 이 클래스들은 성능과 메모리 사용 면에서 일반 배열보다 효율적인 경우가 많으며, 큐, 스택, 연결 리스트, 고정 배열 등을 쉽게 구현할 수 있게 해줍니다.
📦 주요 SPL 자료구조
클래스 | 설명 |
---|---|
SplStack |
후입선출(LIFO) 스택 |
SplQueue |
선입선출(FIFO) 큐 |
SplDoublyLinkedList |
양방향 연결 리스트 |
SplFixedArray |
고정 크기 배열 |
SplPriorityQueue |
우선순위 큐 |
SplObjectStorage |
객체를 키로 쓰는 해시 테이블 |
🧱 SplStack
예제
[code=php]
$stack = new SplStack();
$stack->push('a');
$stack->push('b');
$stack->push('c');
echo $stack->pop(); // c
echo $stack->pop(); // b
[/code]
-
후입선출(LIFO) 구조
-
push()
,pop()
,top()
메서드 사용 가능
🧩 SplQueue
예제
[code=php]
$queue = new SplQueue();
$queue->enqueue('job1');
$queue->enqueue('job2');
echo $queue->dequeue(); // job1
[/code]
-
선입선출(FIFO)
-
작업 큐, 비동기 처리 등에 적합
🔁 SplDoublyLinkedList
예제
[code=php]
$list = new SplDoublyLinkedList();
$list->push('first');
$list->unshift('zero');
echo $list->shift(); // zero
echo $list->pop(); // first
[/code]
-
앞/뒤 삽입, 삭제 모두 지원
-
커서 기반 탐색도 가능 (
next()
,prev()
)
🔒 SplFixedArray
예제
[code=php]
$arr = new SplFixedArray(3);
$arr[0] = 'a';
$arr[1] = 'b';
$arr[2] = 'c';
echo $arr[1]; // b
[/code]
-
배열 크기 고정 → 메모리 효율성 향상
-
루프 성능이 일반 배열보다 더 좋음
🧠 고급: SplObjectStorage
[code=php]
$obj1 = new stdClass();
$obj2 = new stdClass();
$storage = new SplObjectStorage();
$storage[$obj1] = 'meta1';
$storage[$obj2] = 'meta2';
echo $storage[$obj2]; // meta2
[/code]
-
객체를 키로 저장 가능
-
ORM, 캐싱, 인스턴스 상태 관리 등에 유용
✅ 실무 적용 포인트
-
SplQueue
→ 비동기 작업 큐, 이벤트 큐 -
SplStack
→ 실행 순서 제어, 계산기, 재귀 구조 처리 -
SplFixedArray
→ 대량 고정 데이터 처리 시 배열보다 성능 우수 -
SplObjectStorage
→ 객체 상태, 권한, 연결 정보 관리
🧠 요약
-
SPL 자료구조는 배열보다 더 구조화된 컨테이너 제공
-
성능, 명확한 의도, 메모리 효율성을 높이기 위해 적극 활용할 것
-
프레임워크 없이 구조적 코드를 만들 때 특히 유용
- 이전글PHP에서 고성능 파일 업로드 처리 기법 25.03.28
- 다음글PHP에서 다형성(Polymorphism) 제대로 쓰는 팁 25.03.28
댓글목록
등록된 댓글이 없습니다.