개발 지식

개발 지식

PHP PHP에서 SPL 자료구조 적극 활용하기

페이지 정보

profile_image
영삼이
0건 202회 25-03-28 23:14

본문

✅ 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 자료구조는 배열보다 더 구조화된 컨테이너 제공

  • 성능, 명확한 의도, 메모리 효율성을 높이기 위해 적극 활용할 것

  • 프레임워크 없이 구조적 코드를 만들 때 특히 유용


댓글목록

등록된 댓글이 없습니다.