Есть ли способ расширить признак в PHP?

Я хочу использовать функциональные возможности существующего trait и создавать свои собственные функции поверх него, только для последующего применения его в классах.

Именно поэтому я хочу расширить черту Laravel SoftDeletes, чтобы сделать функцию SaveWithHistory, поэтому она создаст копию текущего состояния записи как удаленной записи. Я также хочу расширить его с помощью поля record_made_by_user_id.

Ответы

Ответ 1

Да, есть. Вы должны определить новый признак следующим образом:

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

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

}