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 isn ' t PHP, я счел оправданным снова спросить его в теге PHP.