В проекте используется пакет gloudemans/shoppingcart.
Возникла необходимость в расширении функционала и единственный вариант - расширение базового объекта "CartItem".
Как разумнее всего подменить реализацию CartItem?
1. Расширьте класс вендора. Создайте класс App\CartItem extends Gloudemans\Shoppingcart\CartItem
2. Переопределите нужный метод в созданном классе.
3. Используйте свой созданный/расширенный класс в нужных местах.
CartItem юзается в Cart (основной сервис, где вся логика компонента), поэтому придётся слишком много чего расширять/подменять в таком подходе.
Вариант с форком оптимален, вероятно.