Интерфейсы в PHP имеют свойства, или у них только есть методы?
Это зависит от того, что вы подразумеваете под «свойствами». Если вы имеете в виду настоящие поля, то нет, это не так. Если вы имеете в виду такие свойства, как в C #, тогда да, они могут (поскольку аксессоры свойств в любом случае являются строго синтаксическим сахаром для методов доступа). То же самое и для событий (хотя, конечно, в каждом случае не указывается реализация для get
/ set
или add
/ remove
аксессуаров).
Обновление : Поскольку PHP не имеет свойств в смысле get
/ set
аксессоров, то ответ на ваш вопрос - нет. Интерфейсы не могут нести свои собственные данные / состояние.
Интерфейсы PHP могут иметь константы, но не свойства (переменные экземпляра). Если вам не нужно изменять свое «свойство», вы можете вместо этого использовать константу.
Интерфейсы в PHP могут содержать только публичные методы подписи без тела метода. Они также могут содержать константы. Но это все. Ничего больше.
См. http://www.php.net/manual/en/language.oop5.interfaces.php
Интерфейсы определяются с помощью ключевого слова interface так же, как и стандартный класс, но без любой из методов, для которых определено их содержимое. […] Все методы, объявленные в интерфейсе, должны быть общедоступными, такова природа интерфейса. […] Интерфейсы могут иметь константы. Константы интерфейса работают точно так же, как константы класса, за исключением того, что они не могут быть переопределены классом / интерфейсом, который их наследует.