в этом плане есть только один недостаток реализации в PHP - нельзя указать явно, что трейт реализует интерфейс если это исправить - всё будет ОК
будет лучше, но все равно костыльно тогда уж пускай трейты станут полноценными членами системы типов и будет чет типа function fetch(Identifiable $obj) //угу, убогое именование трейтов
- если там один трейт, то его можно заменить абстрактным классом - если два и больше трейтов, то либо нарушается SRP, либо происходит бессмысленное обощение, которое приводит к усложнению и запутыванию кода
- если там один трейт, то его можно заменить абстрактным классом - если два и больше трейтов, то либо нарушается SRP, либо происходит бессмысленное обощение, которое приводит к усложнению и запутыванию кода
тот же Symfony Cache. что было бы, если бы Николас каждый адаптер написал в отдельном классе максимум с одним абстрактным без трейтов? библиотека и тесты стали бы понятными!
- если там один трейт, то его можно заменить абстрактным классом - если два и больше трейтов, то либо нарушается SRP, либо происходит бессмысленное обощение, которое приводит к усложнению и запутыванию кода
Да, но за чем то его придумали в пхп, зачем то используют в симфони. Не думаю, что они дураки )