> 백엔드 개발 > PHP7 > PHP 7에서 다형성을 사용하는 방법?

PHP 7에서 다형성을 사용하는 방법?

Johnathan Smith
풀어 주다: 2025-03-10 16:39:17
원래의
468명이 탐색했습니다.

PHP 7에서 다형성을 사용하는 방법 다른 객체 지향 프로그래밍 언어와 마찬가지로 PHP 7의 다형성을 사용하면 다른 클래스의 객체가 공통 유형의 객체로 취급 될 수 있습니다. 이것은 주로 인터페이스와 추상 클래스를 통해 달성됩니다.

인터페이스 사용 :

인터페이스는 클래스가 준수 해야하는 계약을 정의합니다. 구현을 제공하지 않고 메소드 서명을 지정합니다. 그런 다음 클래스는 를 구현하여 인터페이스를 구현하여 방법에 대한 자체 구체적인 구현을 제공합니다.

이 예에서는 및

가 객체로 취급됩니다.

루프는 두 유형이 모두 포함 된 배열을 통해 반복되어 각각 를 호출합니다. 올바른 구현은 실제 객체 유형에 따라 실행됩니다. 추상 클래스 사용 :

초록 클래스는 인터페이스와 유사하지만 일부 메소드에 대한 기본 구현을 제공 할 수 있습니다. 그들은 직접적으로 인스턴스화 할 수 없습니다. 서브 클래스는 이들을 확장하고 추상적 인 방법에 대한 구현을 제공해야합니다. 여기, 및 에서 상속하고 메소드의 특정 구현을 제공합니다.

방법은 추상 클래스에서 기본 구현을 가지고 있지만, 필요한 경우 서브 클래스는이를 무시할 수 있습니다.
// Define an interface
interface Shape {
  public function getArea();
}

// Implement the interface in different classes
class Circle implements Shape {
  private $radius;

  public function __construct($radius) {
    $this->radius = $radius;
  }

  public function getArea() {
    return pi() * $this->radius * $this->radius;
  }
}

class Square implements Shape {
  private $side;

  public function __construct($side) {
    $this->side = $side;
  }

  public function getArea() {
    return $this->side * $this->side;
  }
}

// Using polymorphism
$shapes = [new Circle(5), new Square(4)];
foreach ($shapes as $shape) {
  echo "Area: " . $shape->getArea() . PHP_EOL;
}
로그인 후 복사
PHP 7 응용 프로그램에서 다형성을 사용하는 데있어 실질적인 이점은 무엇입니까?

코드 재사용 : Circle 다형성은 여러 클래스에서 작동하는 일반 코드를 작성할 수있게하여 코드 재사용을 촉진합니다. 이것은 코드 복제를 줄이고 유지 관리 가능성을 향상시킵니다. Square 개선 된 설계 : Shape 다형성은보다 모듈 식적이고 잘 구조화 된 설계로 이어집니다. 그것은 우려의 분리를 장려하고 더 깨끗한 아키텍처를 촉진합니다. foreach getArea() 테스트 성 :

다형성은 단위 테스트를 더 쉽게 만듭니다. 테스트 프로세스를 단순화하여 인터페이스 또는 추상 클래스를 쉽게 조롱하거나 스터브 클래스 할 수 있습니다.

유지 관리 : 한 클래스로의 변경은 응용 프로그램의 다른 부분에 영향을 줄 가능성이 적습니다. 이것은 버그를 도입 할 위험을 줄이고 유지 보수를 더 쉽게 만듭니다. PHP 7 프로젝트의 코드 유지 가능성과 확장 성을 어떻게 향상 시키는가?

다형성은 다음을 통해 개선 된 코드 유지 가능성과 확장성에 직접 기여합니다.
    느슨한 커플 링 :
  • 다형성은 클래스 간의 종속성을 줄입니다. 코드는 특정 클래스와 직접 상호 작용하는 대신 인터페이스 또는 추상 클래스와 상호 작용합니다. 이는 한 클래스의 변경 사항이 시스템의 나머지 부분을 통해 파문 할 가능성이 적다는 것을 의미합니다. 닫는/닫는 원리 : 인터페이스 또는 추상 클래스를 사용하는 기존 코드를 수정하지 않고도 새 클래스를 추가 할 수 있습니다. 이것은 견고한 디자인 원칙의 개방형/폐쇄 원리를 준수합니다.
  • 더 쉬운 리팩토링 :
  • 느슨한 커플 링으로 인해 리팩토링이 단순화됩니다. 인터페이스 또는 초록 ​​클래스 계약이 유지되는 한 시스템의 다른 부분에 영향을 미치지 않고 구현을 수정하거나 교체 할 수 있습니다. 단순화 된 디버깅 : 모듈성으로 인해 오류 소스를 찾아내는 것이 더 쉬워집니다. 변화의 영향은 국소화되고 추적하기가 더 쉽습니다. 다른 시나리오에서의 사용을 보여주는 PHP 7에서 다형성의 예를 제공 할 수 있습니까?
  • 시나리오 1 : Database Interaction : 다른 데이터베이스 시스템 (MySQL, PostQL)을 상상해보십시오. , 및 와 같은 메소드를 사용하여 인터페이스 를 만들 수 있습니다. 그런 다음이 인터페이스를 구현하는 콘크리트 클래스
  • 를 만듭니다. 애플리케이션 코드는 사용 된 실제 데이터베이스 시스템에 관계없이 인터페이스를 사용하여 데이터베이스와 상호 작용할 수 있습니다. 데이터베이스를 전환하려면 콘크리트 클래스의 인스턴스화 만 변경하면됩니다. 시나리오 2 : 결제 처리 : 다른 결제 게이트웨이 (Stripe, PayPal)가있을 수 있습니다. 와 같은 메소드를 사용하여 인터페이스 를 만듭니다. 및
  • 와 같은 구현은 각 게이트웨이의 세부 사항을 처리합니다. 쇼핑 카트 애플리케이션은
인터페이스를 사용하여 핵심 기능을 변경하지 않고 새로운 지불 옵션을 쉽게 추가 할 수 있습니다. 시나리오 3 : 로깅 :

다른 로깅 메커니즘 (파일, 데이터베이스, 이메일)을 A

방법과 함께 인터페이스 를 사용하여 구현할 수 있습니다. , 및 와 같은 콘크리트 클래스는 특정 로깅 방법을 처리합니다. 애플리케이션은 로깅 전략을 선택하는 데있어 interface를 사용할 수 있습니다.

이 예는 다형성이 특정 구현에서 응용 프로그램 논리를 분리하여 유연성, 유지 관리 및 확장 성을 촉진하는 방법을 보여줍니다. 이로 인해 더 깨끗하고 강력하며 쉽게 관리하기 쉬운 PHP 7 응용 프로그램이 발생합니다.

위 내용은 PHP 7에서 다형성을 사용하는 방법?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿