PHP에서 "never" 타입 사용 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
개발 툴
대상자
- PHP 8.1 이상 사용자, 함수 설계 시 타입 명시가 필요한 개발자
- 난이도: 중급 이상 (타입 시스템 이해 필요)
핵심 요약
never
타입은 함수가 절대 값을 반환하지 않는 경우에 사용됨never
는 return type만 허용되며, union/intersection 타입에서는 사용 불가exit()
/die()
또는 예외 발생 시에만 적절히 사용해야 함
섹션별 세부 요약
1. `never` 타입 정의
- PHP 8.1에서 도입된 타입으로, 함수가 절대 값을 반환하지 않는다는 것을 명시
- 예외 발생 또는
exit()
/die()
호출 시에만 사용 가능 never
는 파라미터 타입으로 사용 불가
2. 사용 예시 및 오류 처리
- 정상 사용 예시:
```php
public function doSomething(): never {
throw new Exception('예외 발생');
}
```
- 잘못된 사용 예시:
```php
public function doSomething(): never {
return '값 반환' // Fatal error 발생
}
```
- 암시적 반환 시에도 Fatal Error 발생 (예:
publishArticle
메서드)
3. 타입 제한 사항
- Union 타입 (
never|string
) 사용 시 Fatal Error 발생 - Intersection 타입 (
never&string
) 사용 시 Fatal Error 발생 never
는 독립 타입으로만 사용 가능
4. 실무 적용 사례
- Laravel/Symfony의
dd()
함수에서 사용:
```php
function dd(mixed ...$vars): never {
exit(1); // 스크립트 종료
}
```
exit(1)
호출로 함수 종료가 보장되어never
타입 사용 가능
결론
never
타입은 예외 처리 또는 스크립트 종료가 보장된 함수에서만 사용해야 함- 타입 명시로 코드 가독성 향상 및 런타임 오류 방지 효과 있음
- PHP 8.1 이상 환경에서만 지원되므로 버전 확인 필수