2016-12-30 54 views
-4

我很难理解命名空间。这没有任何意义。不过,让我引导你了解我学到的知识。了解`命名空间'

问题:如果每个文件都必须有include,名称空间有什么意义?为什么我只是不能说嘿,这是主要的根目录,我想加载Core文件夹中的所有类。为了我对c#的使用经验的了解,我可以使用'Call'命名空间/类作为参考,或者作为一个新类。

由于这非常麻烦,我在每个包含该文件夹内所有文件的文件夹中创建了一个index.php文件。这有点像我自己的班级装载机。

我只是不明白它。

包括命名空间..

包括类 “无厘头”

使用\命名空间\到\类为类;

$Class = new Class(); 

我只是不明白“使用”,如果你必须要求的用法。我就是这样直观地看到它的完成,我不喜欢这个概念,我希望这不是这个概念,但是我需要某个人的解释。我需要完成一个项目。谢谢。

  • 对不起,这篇文章没有格式化。我目前正在使用我的手机,并不知道stackoverflow bbcode也。
+0

你在你的分类中加入'include' /'require'并添加'use'吗? –

+1

通常情况下,你有一个自动加载器,需要你所有的文件。因此,在项目中的文件中,您只需使用Namespace \ Class; $ obj = new Class();'。为了让简单的自动加载器只使用作曲家,你也可以使用它来安装/管理依赖关系。 – JimL

+0

use语句也是可选的使用。 '使用Namespace \ Class; $ obj = new Class();'与$ obj = new Namespace \ Class()相同;'use语句的明显优点是使用文件中的类将需要更少的代码。这也是(IMO)很高兴有一个文件在顶部使用的类的列表。 – JimL

回答

2

manual

在PHP世界,命名空间被设计为解决两个问题,图书馆的作者和应用程序创建可重复使用的代码元素如类或功能时遇到的问题:

  1. 您创建的代码与内部PHP类/函数/常量或第三方类/函数/常量之间的名称冲突。
  2. 可以用别名(或缩短)Extra_Long_Names来缓解第一个问题,提高源代码的可读性。

PHP命名空间提供了一种将相关类,接口,函数和常量分组的方法。

有关更多信息和一些示例,请参阅链接手册页。

Autoloading和命名空间互补,并帮助避免包括你抱怨。

1

因为如果你的文件已包含同名全局变量/功能(不一定是常见的,但很可能的),他们会碰撞,编译器将不知道你要引用哪一个。

如果一切都在命名空间内,除非命名空间名称相同,否则将不会有任何命名冲突,因为您需要引用命名空间名称和函数名称。

在开始编写包含其他库的大型程序之前,这不是一个问题,但它肯定是一个需要创建名称空间的问题。