0

假设您有一个全局method().

您可以将其移动到名称空间和类中,并将其命名为

\\Namespace\Class::method();

有什么区别吗?一个比另一个更好吗?

从本质上讲,您没有更改任何内容,并且该方法适用于所有意图和目的,就像以前一样全局 - 您仍然可以从任何地方调用它,但您必须输入更多字符。我错过了一些令人尴尬的基本内容吗?

4

1 回答 1

1

命名空间和类不仅可以帮助您区分代码并帮助您避免名称冲突,而且通过使用自动加载器并仅在您需要时加载您需要的内容,实际上可以使其更快。

您不太可能像这样调用您的方法:

\\Namespace\Class::method();

您更有可能use Namespace\Class在文件顶部声明语句,然后执行Class::method();.

甚至更有可能(而且很可能更好)您实际上会实例化一个真实的对象,而不是使用静态方法(这很方便,但确实会破坏封装)。在您的示例中,您使用的是静态方法,对于很多人来说,这并不是特别面向对象的。

在功能上,孤立地考虑,方法和函数之间没有真正的区别。但是方法可以访问类属性和私有方法,因此它可以进一步帮助您构建一个职责分配合理的系统。

但要有意义,差异必须不仅仅是表面上的。如果您正在使用类和对象,请阅读SOLID原则和设计模式(一次一点)并接受OOP的优势。

于 2017-01-04T16:25:12.590 回答