programing

PHP에서 특성을 확장하는 방법이 있나요?

nicescript 2022. 10. 20. 21:28
반응형

PHP에서 특성을 확장하는 방법이 있나요?

기존 기능을 사용하고 싶다trait나만의 것을 만들 수 있는trait나중에 수업에 적용하기 위해서만요.

연장하고 싶다Laravel SoftDeletes만들어야 할 특성SaveWithHistory삭제한 레코드로 레코드의 복사본을 만듭니다.저도 같이 연장하고 싶어요.record_made_by_user_id들판.

네, 있어요.다음과 같은 새로운 특성을 정의하면 됩니다.

trait MySoftDeletes 
{
    use SoftDeletes {
        SoftDeletes::saveWithHistory as parentSaveWithHistory;
    }

    public function saveWithHistory() {
        $this->parentSaveWithHistory();

        //your implementation
    }
}

나는 다른 접근법을 가지고 있다. ParentSaveWithHistory이 특성에서는 아직 적용할 수 있으므로 적어도 개인으로 정의해야 합니다.

trait MySoftDeletes
{
    use SoftDeletes {
        saveWithHistory as private parentSaveWithHistory; 
    }

    public function saveWithHistory()
    {
        $this->parentSaveWithHistory();
    }
}

또한 특성에서 '덮어쓰기' 방법을 고려하십시오.

use SoftDeletes, MySoftDeletes {
    MySoftDeletes::saveWithHistory insteadof SoftDeletes;
}

이 코드는 메서드를 사용합니다.saveWithHistory부터MySoftDeletes에 존재하는 경우라도)SoftDeletes.

언급URL : https://stackoverflow.com/questions/40299080/is-there-a-way-to-extend-a-trait-in-php

반응형