이 기사에서는 PHP 객체 지향 프로그래밍에서 가장 중요한 구조 패턴 중 하나인 PHP 인터페이스를 활용하는 방법을 알아봅니다.
인터페이스를 사용하면 특정 메서드가 구현되는 방법의 복잡성과 절차를 포함하지 않고 클래스가 실행해야 하는 공용 메서드를 나타내는 프로그램을 만들 수 있습니다. 이것은 인터페이스가 메소드 이름과 인수를 정의할 수 있지만 메소드의 내용은 정의할 수 없음을 의미합니다. 인터페이스를 구현하는 모든 클래스는 인터페이스에서 정의한 모든 메서드를 구현해야 합니다.
인터페이스는 클래스와 유사하게 특성화되지만, 선언에서 클래스 구문을 대체하는 키워드는 인터페이스 키워드뿐이며 해당 내용이 정의된 메서드는 없습니다.
예시
간단한 예를 들어 인터페이스를 만들어 구현해 봅시다.
<?php Interface MyInterface { public function getName(); public function getAge(); } class MyClass implements MyFirstInterface{ public function getName() { echo "My name A".'<br>'; } public function getAge(){ echo "My Age 12"; } } $obj = new MyClass; $obj->getName(); $obj->getAge(); ?>
출력:
My name A My Age 12
설명:
여기에서 내용 없이 내부에 getName 및 getAge 두 가지 메서드가 있는 MyFirstInterface 인터페이스를 선언했습니다. 그런 다음 MyClass 클래스는 이 인터페이스를 구현하고 요구 사항에 따라 사용 가능한 메서드를 사용합니다.
인터페이스의 몇 가지 중요한 특성을 알아보겠습니다.
- 인터페이스는 콘텐츠가 없는 메소드로 구성되며, 이는 인터페이스 메소드가 추상 메소드임을 의미합니다.
- 인터페이스의 모든 메소드에는 공개 가시성 범위가 있어야 합니다.
- 인터페이스는 클래스가 한 클래스에서 상속할 수 있지만 클래스가 하나 이상의 인터페이스를 구현할 수 있기 때문에 클래스와 완전히 동일하지는 않습니다.
- 인터페이스 내부에 변수가 있을 수 없습니다.
참고:
클래스는 하나 이상의 인터페이스를 구현할 수 있지만 하나의 클래스만 확장할 수 있기 때문에 인터페이스를 사용하여 다중 상속을 달성할 수 있습니다.
예시
간단한 예를 들어 이를 테스트해 보겠습니다.
<?php interface a{ public function printData(); } interface b{ public function getData(); } interface c extends a, b{ public function addData(); } class d implements c{ public function printData(){ echo "I am printing"; } public function getData(){ echo "I am reading data"; } public function addData(){ echo "I am adding" } } $myobj = new class d(); $myobj->printData(); $myobj->addData(); ?>
출력:
I am printing I am adding
설명:
여기에서 '인터페이스 a', '인터페이스 b', '인터페이스 c'의 세 가지 인터페이스를 선언했습니다. 이 경우 인터페이스 c는 이전 두 인터페이스도 확장합니다. 그런 다음 인터페이스 c만 구현하는 클래스를 선언했지만 인터페이스 c가 이전 두 인터페이스를 확장하므로 '인터페이스 a', '인터페이스 b' 및 '인터페이스 c'에 선언된 모든 메서드를 클래스에서 사용할 수 있습니다. 디. 이것이 인터페이스를 구현하여 다중 상속을 달성하는 방법입니다.