Принципиально нет, вы не можете достичь того, что вы описываете.Техническая причина в том, что вы получите фатальную ошибку, если попытаетесь использовать более одной черты с одинаковыми именами методов (см. Раздел «Разрешение конфликтов» в документации ) и не сможете получить выборочный доступметод из черты (то есть UserLevel::get
), но на самом деле это либо недоразумение, либо неправильное использование черт.
Черты существуют для горизонтальной композиции функциональности и ключевой части вашего примера, которая указывает на это.дело в особенности «SpecialUser».Если это действительно особый пользователь, то почему это не подкласс «Пользователь» с функциональностью, которую вы описываете, а не черта?
Вопрос в том, чего вы пытаетесь достичь здесь -не с точки зрения кода, а более целостно - и применяя ООП к этому, а не к тому, что, кажется, происходит здесь, а наоборот.