PHP 中的接口有属性,还是只有方法?
原文由 never_had_a_name 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以在 DocBlock 中为接口声明属性。然后,IDE 将提示接口的这些属性(PhpStorm 会提示),但这不会强制在实现类中实际实现这些字段。例如
/**
* @property string $password
* @property string $username
*/
interface IUserDocument
{
}
原文由 Josef Sábl 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答3.1k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
1 回答1.3k 阅读✓ 已解决
2 回答937 阅读✓ 已解决
2 回答1.2k 阅读
1 回答1.2k 阅读
这取决于你所说的“属性”是什么意思。如果您指的是实际字段,那么不,他们没有。如果您指的是 C# 中的属性,那么是的,它们可以(因为属性访问器无论如何都是访问器方法的严格语法糖)。 The same goes for events (though of course, in each case, no implementation is specified for the
get
/set
oradd
/remove
访问器)。更新:由于 PHP 没有
get
/set
访问器意义上的属性,那么你的问题的答案是否定的。接口不能携带自己的数据/状态。