Плюсы и минусы констант интерфейса [closed]

Интерфейсы PHP позволяют определять константы в интерфейсе, например

interface FooBar
{
    const FOO = 1;
    const BAR = 2;
}
echo FooBar::FOO; // 1

Любой реализующий класс будет автоматически иметь эти константы, например

class MyFooBar implement FooBar
{
}
echo MyFooBar::FOO; // 1

Я считаю, что это , что все Глобальное - Зло . Но мне интересно, применимо ли то же самое к константам интерфейса. Учитывая, что Кодирование в соответствии с интерфейсом в целом считается хорошей практикой, является ли использование констант интерфейса единственными константами, которые можно использовать вне контекста класса?

Мне любопытно услышать ваше личное мнение и то, насколько вы используете константы интерфейса или нет, я в основном ищу в ваших ответах объективные причины. Я не хочу, чтобы это был вопрос типа опроса. Меня интересует, какое влияние использование констант интерфейса оказывает на ремонтопригодность. Связь. Или модульное тестирование. Как это связано с SOLID PHP? Нарушает ли это какие-либо принципы кодирования, которые считаются хорошей практикой в ​​PHP? Вы уловили идею…

Примечание: есть аналогичный вопрос для Java , в котором перечислены некоторые довольно веские причины, почему они являются плохой практикой, но поскольку Java не является PHP, я счел это оправданным чтобы снова задать это в теге PHP.

101
задан Community 23 May 2017 в 11:47
поделиться