Просмотр поста

.
Delphinum

Ну трейты изначально создавались для реализации модели микситов в PHP. Странное решение конечно, но работает и вполне удобно. Я использую трейты следующим образом:
1. Определяю интерфейсы - интерфейс это описание возможностей некоторого объекта. Так, интерфейс Transaction, на пример, может использоваться для класса MySQL, если он умеет использовать транзакции, а интерфейс Cached определяет, что MySQL умеет кешировать.
2. Определяю трейты для общей логики - трейт это реализация конкретного интерфейса или его части. Так, интерфейс Cached может быть реализован не только для базы (класса MySQL), но и, скажем, для работы с файлами (класс File), в этом случае оба решения будут реализовывать интерфейс, но, хорошо написанный трейт, позволит просто добавить уже готовую реализацию как в MySQL, так и в File.

Другими словами трейт позволяет добавлять реализацию в классы без необходимости копирования этой реализации руками. Другой пример, трейт SingletonTrait. Этот трейт может использоваться всеми классами, реализующими паттерн Singleton. Ведь у всех этих классов механизм получения одного единственного объекта один и тот же, вот он и выносится в трейт

Трейты, обычно, дополняют интерфейсы. Если ты используешь только трейты (без интерфейсов), возможно ты просто пытаешься разделить реализацию на части (зачем?). Если же ты используешь конкретный трейт только в одном классе и больше нигде, то следует удалить трейт, а реализацию добавить прямо в класс, так правильнее.

P.S. что у тебя в классе делают public свойства?