bod*_*ser 5 php coding-style interface
当我浏览GitHub时,大多数项目都以这种方式在接口中定义方法:
interface ExampleInterface
{
function getId();
}
Run Code Online (Sandbox Code Playgroud)
我现在的问题是为什么在接口中定义方法可见性是不好的风格:
interface ExampleInterface
{
public function getId();
}
Run Code Online (Sandbox Code Playgroud)
它使接口更严格,但不是一个接口用于什么?
Not*_*fer 11
接口中的私有函数有什么意义?宣告public是多余的.
来自TFM:
All methods declared in an interface must be public, this is the nature of an interface.
http://php.net/manual/en/language.oop5.interfaces.php
这是因为接口是您向外界提供某些功能的承诺。在上面的示例中,每当一个类实现一个接口时,它就保证该类将提供一个getId向外界调用的方法,无论它是如何实现的。
因此,如果您创建一个 private promise,那么它是无关紧要的,因为没有人关心是否存在具有某些功能的私有方法,无论如何其他人都无法访问它。
另一方面,接口中的所有方法本质上都是公共的(因为它们只是对外界的承诺),因此您明确提及它是public多余的。