PHP OOP - 특성
PHP - 특성이란 무엇입니까?
PHP는 단일 상속만 지원합니다. 자식 클래스는 한 부모에게서만 상속할 수 있습니다.
그렇다면 클래스가 여러 동작을 상속해야 하는 경우 어떻게 해야 할까요? OOP 특성은 이 문제를 해결합니다.
특성은 여러 클래스에서 사용할 수 있는 메서드를 선언하는 데 사용됩니다. 특성에는 여러 클래스에서 사용할 수 있는 메서드와 추상 메서드가 있을 수 있으며 메서드에는 모든 액세스 한정자(공개, 비공개 또는 보호)가 있을 수 있습니다.
특성은 trait
키워드로 선언됩니다.
통사론
<?php
trait TraitName {
// some code...
}
?>
클래스에서 특성을 사용하려면 다음
use
키워드 를 사용하십시오.
통사론
<?php
class MyClass {
use TraitName;
}
?>
예를 살펴보겠습니다.
예시
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
class Welcome {
use
message1;
}
$obj = new Welcome();
$obj->msg1();
?>
예시 설명
여기에서 하나의 특성인 message1을 선언합니다. 그런 다음 Welcome이라는 클래스를 만듭니다. 클래스는 특성을 사용하고 특성의 모든 메소드는 클래스에서 사용할 수 있습니다.
다른 클래스가 msg1() 함수를 사용해야 하는 경우 해당 클래스에서 message1 특성을 사용하기만 하면 됩니다. 이렇게 하면 동일한 메서드를 반복해서 다시 선언할 필요가 없기 때문에 코드 중복이 줄어듭니다.
PHP - 다중 특성 사용
다른 예를 살펴보겠습니다.
예시
<?php
trait message1 {
public function msg1() {
echo "OOP is fun! ";
}
}
trait message2 {
public function msg2()
{
echo "OOP reduces code duplication!";
}
}
class Welcome {
use message1;
}
class Welcome2 {
use message1, message2;
}
$obj = new Welcome();
$obj->msg1();
echo "<br>";
$obj2 =
new Welcome2();
$obj2->msg1();
$obj2->msg2();
?>
예시 설명
여기에서 message1과 message2라는 두 가지 특성을 선언합니다. 그런 다음 Welcome과 Welcome2라는 두 개의 클래스를 만듭니다. 첫 번째 클래스(Welcome)는 message1 특성을 사용하고 두 번째 클래스(Welcome2)는 message1 및 message2 특성을 모두 사용합니다(여러 특성은 쉼표로 구분됨).