Всем привет! Есть вопрос связанный с дублированием методов в классах.
Есть несколько классов, допустим их название:
— Profile
— Price
— Post
В них есть одинаковые константы и одинаковые методы:
//Статусы
const STATUS_NOT_PAID = 0;
const STATUS_PAID = 1;
const STATUS_CANCEL = 3;
и сами методы:
/**
* Статистический метод получения списка статусов
* @return array
*/
public static function getStatusList()
{
return [
self::STATUS_NOT_PAID => 'Не оплачено',
self::STATUS_PAID => 'Оплачено',
self::STATUS_CANCEL => 'Отменена'
];
}
/**
* Получение статуса из модели
* @return mixed
*/
public function getStatusName()
{
ArrayHelper::getValue(self::getStatusList(),$this->status);
}
Данные методы и константы дублируются из одного класса в другой. При этом если что-то измениться в статусах придется везде изменять, где они применены.
Как в данном случае лучше реализовать одинаковые методы без дублирования и удобного использования в разных классах?
Наследовать от одного класса нельзя, так как классы разные. Интерфейсы помогут только не допустить ошибок, но не помогут от избавления дублирования из класса в класс. Я предполагаю, что нужно использовать в поведениях и прикреплять где нужно.... Правильно ли я думаю?