RT
Size: a a a
RT
СП
class \Shared\Department
{
public const ADMINISTRATION = 1;
public const SALE = 2;
public const WEBDEV = 3;
public const ADV = 4;
}
class \Employee\Department extends Enum
{
private const ADMINISTRATION = \Shared\Department::ADMINISTRATION;
private const SALE = \Shared\Department::SALE;
private const WEBDEV = \Shared\Department::WEBDEV;
private const ADV = \Shared\Department::ADV;
... код только для контекста сотрудников ...
}
class \Project\Department extends Enum
{
private const WEBDEV = \Shared\Department::WEBDEV;
private const ADV = \Shared\Department::ADV;
... код только для контекста проектов ...
}
RT
RT
СП
/**
* @property-read string $shortname
* @property-read string $supportProjectTags
*/
class \Project\Department extends Enum
{
private const WEBDEV = \Shared\Department::WEBDEV;
private const ADV = \Shared\Department::ADV;
public static function items()
{
return [
self::WEBDEV => [
'name' => 'Веб-разработка',
'shortName' => 'Вебдев',
'supportProjectTags' => true,
],
self::ADV => [
'name' => 'Отдел рекламы',
'shortName' => 'Реклама',
'supportProjectTags' => false,
],
];
}
}
СП
RT
AB
RT
class Department extends Enum
{
private const
WEBDEV = \Shared\Department::
WEBDEV;
private const
ADV = \Shared\Department::
ADV;
private $aliases = [
self::
WEBDEV => 'Веб-разработка',
self::
ADV => 'Отдел рекламы'
];
public function getAlias(): string
{
return $this->aliases[$this->value];
}
}
Department::
WEBDEV()->getAlias();
RT
RT
RT
Department
(1))->getAlias();СП
RT
СП
Department::
WEBDEV() - вот так красиво, надо будет себе тоже такой вызов добавить)RT
T
Д
T
Д