Возможный дубликат:
черты в php – примеры реальных примеров / лучших практик?
В каких ситуациях можно использовать черты в PHP? У меня есть довольно хорошая общая идея, но я не могу представить, как использовать их в приложении, которое я написал, но это может быть потому, что в то время ему не нужны черты.
Один из сценариев я понял, что нуждается в чертах:
В основном функциональность, которая может быть разделена между классами, но может распространяться по нескольким иерархиям классов, должна использовать черты. Какие другие сценарии могли бы использовать Черты, а не систему событий?
Проблема, связанная с адресами Traits, аналогична тем, что Java-адреса с интерфейсами – как обеспечить соблюдение общего поведения (как представлено интерфейсами) среди классов, которые не находятся в одной иерархии классов.
С такими языками, как C ++, которые имеют только наследование, для двух объектов из двух разных классов, которые должны использоваться в одном контексте, требующих такого же поведения, два класса должны были быть из одной и той же иерархии. Иногда это означало создание довольно искусственных иерархий, чтобы позволить использовать объекты из разных классов в одном контексте.
Java решает эту проблему через интерфейсы – интерфейс – это, по сути, договор, регулирующий поведение, так что объект одного класса может быть заменен объектом отдельного класса, потому что он обещает такое же поведение – интерфейс. Но они не должны быть из одной иерархии.
PHP-черты воплощают эту идею. Характеристика – это своего рода интерфейс, набор поведения, который содержит класс, чтобы его можно было использовать в контексте, который требует такого поведения. Таким образом, любой пример интерфейса Java должен переноситься на пример PHP Traits. PHP-признаки немного отличаются от интерфейсов Java, хотя, поскольку Traits может содержать полные определения функций, тогда как интерфейсы Java могут содержать только объявления (типичные PHP-особенности)!