Wil*_*den 34
这取决于你所说的"属性".如果你的意思是实际的字段,那么不,他们不是.如果您指的是C#中的属性,那么它们可以(因为属性访问器无论如何都是访问器方法的严格语法糖).事件也是如此(当然,在每种情况下,都没有为get
/ set
或add
/ remove
访问器指定实现).
更新:由于PHP没有get
/ set
accessors 意义上的属性,因此您的问题的答案是否定的.接口不能携带自己的数据/状态.
Gor*_*don 19
PHP中的接口可能只包含没有方法体的公共方法签名.它们也可能包含常量.但就是这样.没有其他的.
见http://www.php.net/manual/en/language.oop5.interfaces.php
接口使用interface关键字定义,与标准类相同,但没有任何定义其内容的方法.[...]接口中声明的所有方法都必须是公共的,这是接口的本质.[...]接口可能有常量.接口常量的工作方式与类常量完全相同,只是它们不能被继承它的类/接口覆盖.
Jos*_*ábl 13
您可以在DocBlock中为接口声明属性.然后,IDE会提示接口的这些属性(PhpStorm会这样做),但这不会强制实现类中这些字段的实际实现.E. g.
/**
* @property string $password
* @property string $username
*/
interface IUserDocument
{
}
Run Code Online (Sandbox Code Playgroud)