Зачем нужны трейты в php?
Трейты - это миксины, которые могут добавляться к классам в различных комбинациях. Попробуйте повторить на чистых классах
trait Harvestable {
  function harvest() { }
}
trait Waterable {
  function water() { }
}
trait Repottable {
  function repot() { }
};
class Plant { }
class Vegetable extends Plant {
  use Waterable;
  use Harvestable;
}
class Fruit extends Plant {
  use Waterable;
  use Harvestable;
  use Repottable;
}
class Succulent extends Plant {
  use Repottable;
}
От абстрактного класса вы можете наследоваться только от одного, а трейтов можно использовать сколько угодно.