조합 vs 상속: PHP 프레임워크 활용 사례
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

객체 지향 설계에서 조합 vs 상속의 활용: PHP 프레임워크 사례 분석

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

PHP 프레임워크 개발자, 객체 지향 프로그래밍 학습자

난이도: 중간 (기본적인 OOP 개념 이해 필요)

핵심 요약

  • 상속단일 클래스 간 관계를 정의하며, 코드 재사용성DRY 원칙을 지원
  • 조합다른 클래스 인스턴스를 포함하여 유연성테스트 가능성을 높임
  • Slim은 PSR-11 호환 컨테이너를 통해 조합 기반 의존성 주입 구현
  • Laravel은 인터페이스 기반 상속과 조합을 병행하여 모듈성과 확장성을 달성

섹션별 세부 요약

1. 상속의 개념 및 PHP 적용

  • 상속은 부모 클래스의 속성/메서드를 자식 클래스가 재사용 가능
  • PHP에서 단일 상속 지원, Traits로 다중 상속 시뮬레이션 가능
  • PSR-3 인터페이스를 구현한 AbstractLogger 클래스를 기반으로 Logger 확장
  • HTTP 예외 클래스(HttpException, HttpForbiddenException)는 공통 로직 재사용을 위해 상속 사용

2. 조합의 개념 및 이점

  • 조합은 "has-a" 관계를 통해 다른 클래스 인스턴스를 포함하여 기능 조합
  • 의존성 주입(DI)을 통해 조합 구현, PSR-11 호환 컨테이너(PHP-DI, Symfony DI 등) 지원
  • 조합은 유연성테스트 가능성을 높이고, 변경에 대한 영향 범위 최소화

3. Slim 프레임워크 사례

  • FastRouteDispatcherGroupCountBased 클래스를 상속 (PSR-11 호환)
  • GroupCountBased 클래스는 @final 어노테이션으로 확장 제한 (PHP의 final 키워드 미사용)
  • 다형성 활용: GroupCountBasedFastRouteDispatcher가 동일한 메서드를 다르게 구현

4. Laravel 프레임워크 사례

  • Application 클래스는 Container를 상속하여 DI 컨테이너 기능 확장
  • ContainerContract 인터페이스는 PSR-11 ContainerInterface 확장, Laravel 전용 기능 추가
  • PasswordBroker 클래스는 조합을 통해 UserProvider 의존성 주입, 테스트 용이성 제공

결론

  • 상속은 코드 재사용성과 DRY 원칙을 지원하지만, 조합은 유연성과 테스트 가능성을 제공
  • PHP 프레임워크는 PSR 표준인터페이스 기반 설계를 통해 확장성과 호환성 달성
  • 실제 개발에서는 조합을 통해 의존성 주입을 적용하고, 상속인터페이스 정의에 집중하는 것이 효과적