>  기사  >  백엔드 개발  >  PHP에서 다중 상속을 구현하기 위한 특성 구문 소개(코드 예제)

PHP에서 다중 상속을 구현하기 위한 특성 구문 소개(코드 예제)

不言
不言앞으로
2019-03-11 15:04:322173검색

이 글에서는 PHP에서 다중 상속을 구현하기 위한 특성 구문(코드 예제)을 소개합니다. 필요한 경우 이를 참조할 수 있습니다. 당신을 도와줍니다.

PHP에는 다중 상속 기능이 없습니다. 다중 상속을 지원하는 프로그래밍 언어에서도 이 기능을 거의 사용하지 않습니다. 대부분의 사람들은 다중 상속이 좋은 설계 방법이 아니라고 생각합니다.

그런데 개발에 다중상속을 사용한다면 어떻게 해야 할까요?
다음은 PHP에서 다중 상속을 구현하기 위해 "특성"을 사용하는 문제를 소개합니다.

PHP5.4부터 PHP는 코드 재사용을 위해 "특성" 구문을 구현했습니다.

Trait는 PHP의 단일 상속 언어를 위해 준비된 코드 재사용 메커니즘입니다. 단일 상속의 한계를 줄이기 위해 다양한 구조적 수준에서 메서드를 재사용하는 메서드가 개발되었습니다.
특성 및 클래스 조합의 의미는 복잡성을 줄이고 기존 다중 상속 및 Mixin 클래스와 관련된 일반적인 문제를 방지하는 방법을 정의합니다. .

기본 클래스에서 상속된 멤버는 특성에 의해 삽입된 멤버로 재정의된다는 점에 유의해야 합니다. 우선 순위는 현재 클래스의 멤버가 특성의 메서드를 재정의하고 특성이 상속된 메서드를 재정의하는 것입니다.

먼저 예를 들어보겠습니다:

trait TestOne{
    public function test()
    {
        echo "This is trait one <br/>";
    }
}
trait TestTwo{
    public function test()
    {
        echo "This is trait two <br/>";
    }
    public function testTwoDemo()
    {
        echo "This is trait two_1";
    }
}
class BasicTest{
    public function test(){
        echo "hello world\n";
    }
}
class MyCode extends BasicTest{
    //如果单纯的直接引入,两个类中出现相同的方法php会报出错
    //Trait method test has not been applied, because there are collisions with other trait 
    //methods on MyCode 
    //use TestOne,TestTwo;
    //怎么处理上面所出现的错误呢,我们只需使用insteadof关键字来解决方法的冲突
    use TestOne,TestTwo{
        TestTwo::test insteadof TestOne;
    }
}
$test = new MyCode();
$test->test();
$test->testTwoDemo();

실행 결과:

This is trait two 
This is trait two_1

위 내용은 PHP에서 다중 상속을 구현하기 위한 특성 구문 소개(코드 예제)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제