피드로 돌아가기
Dev.toBackend
원문 읽기
PHP Callables 기반 Hook 시스템을 통한 플러그인 Decoupling 구현
How WordPress Orchestrates Thousands of Plugins: The Magic of Hooks ?
AI 요약
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 전략 적용 여부 확인