피드로 돌아가기
Dev.toBackend
원문 읽기
PHPStan Level 8 도입으로 mixed 타입 1,400개를 제거하여 HTTP 500 에러 제로화 달성
Why `mixed` Is the Worst Type in Your PHP Codebase (and How to Kill It)
AI 요약
Context
PHP 8.0의 mixed 타입 도입 이후 정적 분석 도구의 탐지 회피 영역이 생성됨에 따른 런타임 에러 증가 상황. 특히 Laravel과 같은 동적 프레임워크의 기본 설정이 도메인 계층까지 유입되어 Type Safety가 붕괴된 아키텍처적 한계 존재.
Technical Solution
- PHPStan Level 8 설정을 통한
mixed타입에 대한 Method Call, Property Access, Array Access 전면 금지 mixed타입을 구체적인 Domain Object나 Nullable Type(?Order)으로 명시하여 IDE의 정적 분석 및 Refactoring 기능 복구- Generic PHPDoc(
Collection<int, Order>) 도입을 통한 Collection 내부 요소의 타입 흐름(Type Flow) 가시성 확보 - Boundary Layer에서
is_array()등 런타임 체크를 수행한 후 내부 Core로 Typed Data를 전달하는 데이터 정제 구조 설계 - CI 파이프라인 내
mixed타입 밀도 측정 스크립트를 통합하여 신규 유입 차단 및 기존 부채의 점진적 제거 강제
실천 포인트
1. PHPStan 레벨을 8로 상향하여 `mixed` 타입 사용 시 강제 narrowing 수행 여부 확인
2. Generic Collection 사용 시 PHPDoc을 통해 내부 요소 타입을 명시적으로 정의
3. 외부 API나 캐시에서 읽어온 `mixed` 데이터를 도메인 서비스에 전달 전 런타임 타입 검증 수행
4. CI 단계에서 `mixed` 타입 밀도를 추적하는 메트릭을 도입하여 기술 부채 상한선 관리