PHP:在界面中设置private,protected,public?

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

  • 您一针见血 - 需要注意的是,如果实现接口的类要扩展并且该方法供内部使用但可能有不同的实现,则“受保护”声明*可能*不是多余的。但是 PHP 不会让你这样做,所以它有点学术性。 (3认同)

Roh*_*bhu 5

这是因为接口是您向外界提供某些功能的承诺。在上面的示例中,每当一个类实现一个接口时,它就保证该类将提供一个getId向外界调用的方法,无论它是如何实现的。

因此,如果您创建一个 private promise,那么它是无关紧要的,因为没有人关心是否存在具有某些功能的私有方法,无论如何其他人都无法访问它。

另一方面,接口中的所有方法本质上都是公共的(因为它们只是对外界的承诺),因此您明确提及它是public多余的。