happy cat image

everdevel

coding

login
알림X
  • 현재 댓글에 대한 답변만 표시합니다.
  • 표시할 댓글 이력이 없거나 로그인해 주세요.
























everdevel이 만든 무료 클라우드 개발환경을 소개합니다.

방문해 주셔서 감사합니다.

트레이트의 메소드 대신 사용할 명칭 정하기

2개의 트레이트를 사용하는데 2개의 트레이트에 동일한 이름의 메소드가 있다고 할 때 둘 중 어떠한 것을 사용할 지정할 수 있어요.
어떤 메소드를 사용할지 지정하는 키워드 insteadof입니다.

insteadof 사용 방법

trait 트레이트명{}
class 클래스명
{
    use 트레이트명, 트레이트명 {
        사용할 트레이트명::메소드명 insteadof 안사용할 트레이트명;
    }
}

자 그럼 예제를 통해서 볼까요.

<?php
    trait apple
    {
        public function phone()
        {
            return 'iPhone';
        }
    }

    trait samsung
    {
        public function phone()
        {
            return 'galaxy';
        }
    }

    class disneyAnimation
    {
        use apple, samsung {
            apple::phone insteadof samsung;
        }
    }

    $disney = new disneyAnimation;
    echo "주토피아의 주디는 ".$disney->phone()."를 사용합니다.";
?>

결과는 바로 아래에서 확인하겠습니다.

trait가 3개일 때는 instead of 뒤에 , 를 찍고 사용하지 않을 트레이트명을 적어줍니다.

insteadof 다중 사용 방법

trait 트레이트명{}
class 클래스명
{
    use 트레이트명, 트레이트명 {
        사용할 트레이트명::메소드명 insteadof 안사용할 트레이트명, 안사용할 트레이트명;
    }
}

다음의 예제로 다중으로 insteadof를 체험해볼까요

<?php
    trait apple
    {
        public function phone()
        {
            return 'iPhone';
        }
    }

    trait samsung
    {
        public function phone()
        {
            return 'galaxy';
        }
    }

    trait lg
    {
        public function phone()
        {
            return 'g';
        }
    }

    class disneyAnimation
    {
        use apple, samsung, lg {
            apple::phone insteadof samsung, lg;
        }
    }

    $disney = new disneyAnimation;
    echo "주토피아의 주디는 ".$disney->phone()."를 사용합니다.";
?>

결과는 바로 아래에서 확인하겠습니다.

만약에 다른 트레이트에 있는 phone()메소드도 사용해야 한다면 어떻게 해야 할까요? 다음시간에는 다른 트레이트에 있는 같은 이름의 메소드를 사용하는 방법에 대해 알아볼게요.


봐주셔서 감사합니다. 문의 또는 잘못된 설명은 아래의 댓글에 부탁드립니다.
당신의 작은 누름이 저에게는 큰 희망이 됩니다.

컨텐츠의 내용을 더 보려면 바로 아래에서 확인할 수 있습니다.


    
    

강좌로 돌아가기

댓글 0개

정렬기준