symfony — UML-представление черты PHP

Я создаю проекты с Symfony2 / Doctrine и пытаюсь реализовать черты.
Пока что нет проблем при небольших испытаниях, но я обычно делаю диаграммы классов и последовательностей UML, прежде чем углубляться в сложные проекты.

Какой объект (ы) дизайна UML следует использовать для символизации особенностей PHP, которые, насколько я знаю, можно рассматривать как поведение? Есть ли какой-нибудь чистый способ сделать это?

Большое спасибо за ваши ответы!

никола

5

Решение

PHP Trait в основном UML Абстрактный класс или же Шаблон класса UML подключен к используемому в классе с UML Отношения Обобщения используя множественное наследование обозначение

введите описание изображения здесь

Смотрите также:

  • Рисунок «Диаграмма UML с чертой» в статье Брендан Бейтс: Черты: правильный путь

  • Программисты: Есть ли в UML представление для миксинов или черт?

  • Руководство по PHP → Справочник по языку → Классы и объекты → Черты

    По состоянию на PHP 5.4.0, PHP реализует метод повторное использование кода называется Traits,

    Traits механизм повторного использования кода в языках с одним наследованием, таких как PHP, Trait намеревается уменьшить некоторые ограничения одиночного наследования предоставляя разработчику возможность свободно использовать наборы методов в нескольких независимых классах, находящихся в разных иерархиях классов. Семантика сочетания Traits и классы определены таким образом, чтобы уменьшить сложность и избежать типичных проблем, связанных с множественным наследованием и Mixins,

    Trait похож на класс, но предназначен только для группирования функциональных возможностей детальным и последовательным образом. это невозможно создать экземпляр Trait сам по себе. Это дополнение к традиционному наследованию и позволяет горизонтальную композицию поведения; то есть применение членов класса без необходимости наследования

5

Другие решения

В самой ранней статье, в которой я видел объяснение ролей / черт, они представлены в UML линией, соединяющей роль / черту с методом / функцией внутри класса. http://scg.unibe.ch/archive/papers/Scha03aTraits.pdf

0

На мой взгляд, черта PHP — это не что иное, как определение протокола, которое вы найдете в других языках. Протокол является некоторым функциональным расширением класса. Вы обычно моделируете это с интерфейсом (Черта) и классом, использующим его, где вы рисуете <> Отношение от класса к Черте.

0