Я создаю проекты с Symfony2 / Doctrine и пытаюсь реализовать черты. До сих пор нет проблем с небольшими попытками, но я обычно делаю диаграммы классов и диаграмм UML до глубоких сложных проектов.
Что представляет собой объект (ы) дизайна UML, который будет использоваться для обозначения свойств PHP, которые можно увидеть, насколько я знаю, как поведение? Есть ли какой-либо чистый способ сделать это?
Большое спасибо за ваши ответы!
никола
PHP
Trait
– это, в основном, UML абстрактный класс или шаблон UML-класса, связанный с используемым классом с отношением обобщения UML с использованием множественного обозначения наследования
Смотрите также:
Рисунок «Диаграмма UML с признаком» в статье Брендан Бейтс: «Черты: правильный путь»
Программисты: Есть ли представление для миксинов или черт на UML?
Справочник PHP → Справочник по языку → Классы и объекты → Черты
Начиная с
PHP
5.4.0,PHP
реализует метод повторного использования кода под названиемTraits
.
Traits
– это механизм повторного использования кода в отдельных языках наследования, таких какPHP
.Trait
предназначен для уменьшения некоторых ограничений одиночного наследования , позволяя разработчику свободно использовать множество методов в нескольких независимых классах, живущих в разных иерархиях классов. Семантика сочетанияTraits
и классов определяется таким образом, который уменьшает сложность и позволяет избежать типичных проблем, связанных с множественным наследованием иMixins
.A
Trait
похож на класс, но предназначен только для групповой функциональности тонко и последовательно. Невозможно создать экземплярTrait
самостоятельно. Это дополнение к традиционному наследованию и обеспечивает горизонтальный состав поведения; то есть применение членов класса без необходимости наследования
В самой ранней статье, которую я видел в объяснениях Роли / Черты, они представлены в UML с линией, соединяющей роль / черту с методом / функцией внутри класса. http://scg.unibe.ch/archive/papers/Scha03aTraits.pdf
Как я вижу, PHP-признак – это не что иное, как определение протокола, которое вы найдете на других языках. Протокол является некоторым функциональным расширением для класса. Обычно вы моделируете это с помощью интерфейса (Trait) и класса, используя его, где вы рисуете отношение <> от класса к значению.