피드로 돌아가기
How WordPress Orchestrates Thousands of Plugins: The Magic of Hooks ?
Dev.toDev.to
Backend

PHP Callables 기반 Hook 시스템을 통한 플러그인 Decoupling 구현

How WordPress Orchestrates Thousands of Plugins: The Magic of Hooks ?

Shishir Bhuiyan2026년 4월 30일2intermediate

Context

다양한 코딩 스타일을 가진 수천 개의 외부 플러그인을 코어 수정 없이 통합해야 하는 과제 직면. 절차지향과 OOP 방식이 혼재된 환경에서 시스템 안정성을 유지하며 기능을 확장하는 아키텍처 필요.

Technical Solution

  • $wp_filter 전역 변수를 활용하여 이벤트별 실행 함수 목록을 관리하는 중앙 집중식 Address Book 구조 설계
  • add_action() 및 add_filter() 함수를 통해 플러그인이 스스로를 등록하는 역방향 의존성 주입 방식 채택
  • is_callable() 함수를 통한 런타임 유효성 검사로 잘못된 함수 호출에 따른 시스템 크래시 방지
  • call_user_func_array()를 활용하여 String, Array, Anonymous Function 등 다양한 형태의 PHP Callables를 단일 인터페이스로 처리
  • 코어 시스템과 플러그인 간의 직접적인 참조를 제거한 Radio Station 방식의 Event Driven 아키텍처 구현

1. 외부 확장 모듈 도입 시 코어 수정 대신 Hook 기반의 인터페이스 정의 검토

2. 다양한 구현체 대응을 위해 구체적인 타입보다 Callable 인터페이스 기반의 호출 구조 설계

3. 런타임 실행 전 유효성 검증 단계를 두어 외부 코드에 의한 시스템 중단 가능성 차단

4. 컴포넌트 간 결합도를 낮추기 위한 Decoupling 전략 적용 여부 확인

원문 읽기