Oop 如何表示类方法的路径?

Oop 如何表示类方法的路径?,oop,terminology,Oop,Terminology,我需要告诉大家,类MyNamespace\Foo的功能栏需要一些修改。我使用的是一种命令式OOP语言,语法类似于Java。有没有更简短的说法MyNamespace\Foo\bar()看起来足够近,但不确定是否正确。如果它类似于Java,为什么不使用点符号:MyNamespace.Foo.bar()?如果它类似于Java,为什么不使用点符号:MyNamespace.Foo.bar()?以下内容通常在PHP中使用:MyNamespace\Foo::bar() 编辑:回复评论 由于可以动态调用静态方

我需要告诉大家,类MyNamespace\Foo的
功能栏需要一些修改。我使用的是一种命令式OOP语言,语法类似于Java。有没有更简短的说法
MyNamespace\Foo\bar()
看起来足够近,但不确定是否正确。

如果它类似于Java,为什么不使用点符号:
MyNamespace.Foo.bar()

如果它类似于Java,为什么不使用点符号:
MyNamespace.Foo.bar()

以下内容通常在PHP中使用:
MyNamespace\Foo::bar()


编辑:回复评论

由于可以动态调用静态方法,因此可以使用
MyNamespace\Foo->bar()
来涵盖这两种情况。然而,我一直在所有文档中看到的标准用法,以及IDE通常可以在docblocks中识别的用法,当您按住ctrl键并单击它们时,它们似乎都使用了双冒号,正如最初所指出的那样


我在很多情况下都没有见过Doctrine的方法。

以下内容通常在PHP中使用:
MyNamespace\Foo::bar()


编辑:回复评论

由于可以动态调用静态方法,因此可以使用
MyNamespace\Foo->bar()
来涵盖这两种情况。然而,我一直在所有文档中看到的标准用法,以及IDE通常可以在docblocks中识别的用法,当您按住ctrl键并单击它们时,它们似乎都使用了双冒号,正如最初所指出的那样


我在很多情况下都没有见过Doctrine的方法。

考虑到静态方法是如何访问的,我认为这有点含糊不清。。。但是我不知道有什么替代方法。条令使用
MyNamespace\Foo::bar()
表示静态方法,而
MyNamespace\Foo\baz()表示实例方法。这同样适用于属性。还要注意的是,您不需要在字符串前面加“\”。考虑到静态方法是如何访问的,我认为这有点含糊不清。。。但是我不知道有什么替代方法。条令使用
MyNamespace\Foo::bar()
表示静态方法,而
MyNamespace\Foo\baz()表示实例方法。这同样适用于属性。还要注意的是,您不需要在字符串前面加“\”,我能想到的一个重要原因是它不区分顶级包成员和内部类。我从来没有这么做过,Java让这两个看起来一样,给你2^个深度的位置来查找类的定义P如果我想出一个符号,我可能会用
来表示一个内部类,而
表示顶级成员和子包。嗯,我不知道我是否理解你的意思。通常,包名都以小写开头,类名都以大写开头。因此,以大写字母开头的第二个名称部分是一个子类。如果这不适合您,您可以使用stacktrace表示法,其中子类与类名之间用美元符号分隔。“通常”不够好。大写与小写的区别只是一个容易被忽视的惯例。没有什么可以阻止我创建名为
com.plbth.Foo
的包或类
com.plbth.ehh.Foo
。不过,关于
$
,您有一个观点。嵌套太多会让人觉得很可怕,但是嵌套太多是深层次问题的征兆……我能想到的一个重要原因是,它没有区分顶级包成员和内部类。我从来没有这么做过,Java让这两个看起来一样,给你2^个深度的位置来查找类的定义P如果我想出一个符号,我可能会用
来表示一个内部类,而
表示顶级成员和子包。嗯,我不知道我是否理解你的意思。通常,包名都以小写开头,类名都以大写开头。因此,以大写字母开头的第二个名称部分是一个子类。如果这不适合您,您可以使用stacktrace表示法,其中子类与类名之间用美元符号分隔。“通常”不够好。大写与小写的区别只是一个容易被忽视的惯例。没有什么可以阻止我创建名为
com.plbth.Foo
的包或类
com.plbth.ehh.Foo
。不过,关于
$
,您有一个观点。大量筑巢会让人觉得很可怕,但这么多的筑巢是深层次问题的征兆。。。