PHP接口是否有属性?

PHP中的接口是否有属性,还是只有方法?

这取决于你所说的“属性”。 如果你是指实际的领域,那么不,他们不。 如果你指的是像C#那样的属性,那么他们可以(因为无论如何,属性访问器都是严格的访问器方法的语法糖)。 事件也是一样(当然,在每种情况下,没有为get / setadd / remove访问器指定实现)。

更新 :由于PHP没有get / set访问器的意义,所以你的问题的答案是否定的。 接口不能携带自己的数据/状态。

PHP中的接口可能只包含没有方法体的公共方法签名 。 他们也可能包含常量。 但就是这样。 没有其他的。

http://www.php.net/manual/en/language.oop5.interfaces.php

接口是使用interface关键字定义的,与标准类相同,但没有定义其内容的任何方法。 […]在接口中声明的所有方法都必须是公共的,这是接口的本质。 […]接口可能有常量。 接口常量的工作方式与类常量完全相同,除非它们不能被inheritance它的类/接口覆盖。

PHP接口可以有常量,但不能有属性(实例variables)。 如果你不需要修改你的“属性”,你可以使用一个常量。

在PHP中最接近你的接口属性是特征http://php.net/manual/en/language.oop5.traits.php 。 与界面类似,特征不能被实例化,但是可以直接在类中使用而不实现它们。