当前位置:首页 > 日记 > 正文

PHP中名称空间的详细描述

PHP中名称空间的详细描述
总结

名称空间支持PHP的经历了一个艰难的旅程。幸运的是,PHP介绍从PHP代码5.3.the应用结构命名空间已经从PHP命名空间的引入大大提高。许多编程语言有命名空间很久以前的概念,和PHP支持的命名空间是晚一点相对于其他语言。无论如何,每一个新功能的推出都有它自己的目的。与其他语言一样,PHP主要引入名称空间来解决名称冲突的问题。

名称空间(名称空间)的概念

复制代码代码如下所示:

当在字符串中使用名称空间的名称时,不要忘记逃跑。
你可以把这个名字想象成一个抽屉,你可以放在抽屉里,铅笔,尺子,A4纸,这些都是你自己的私人物品,你的抽屉下面有某人的抽屉,其他人可以把同样的东西放在抽屉里,为了不带错东西,你决定给自己的抽屉贴上标签,这样你就可以清楚地看到它属于谁了。

以前,开发人员必须向类、函数和常量添加下划线,使自己的代码独立于代码库。这就相当于把标签放在自己的东西上,放在更大的抽屉里。虽然这也是组织代码的一种方式,但这种方式效率很低。

名称空间的到来是为了解决这个问题。我们可以在不同名称空间中声明相同的函数、类和常量,而不会引起名称冲突。

正在使用名称空间。

需要注意的一点是,我们间接使用名称空间。因为PHP 5.3,非用户定义的命名空间中的所有声明(类、函数、常量)都属于全局名称空间。

全局命名空间包含所有PHP内部定义,如回声(),(),和mysqli_connect异常类。由于全局命名空间没有独立身份的名字,它经常被用来作为一个全球性的空间(空间)。

定义命名空间

名称空间的定义必须是PHP文件的第一条语句。在定义名称空间之前允许您使用名称空间的唯一语句是声明语句。

定义名称空间很简单,只使用关键字名称空间,名称空间名称需要遵循PHP文件中其他标识符的命名规则。

下面是定义名称空间的一个示例:

复制代码代码如下所示:

Namespace MyNamespace {

类测试{
}

}
如果要定义属于全局空间的一段代码,则使用名称空间关键字,但名称空间的名称后面没有后面的关键字:

复制代码代码如下所示:

命名空间{

类测试{
}

}
我们甚至可以在一个文件中定义多个名称空间,如下所示:

复制代码代码如下所示:

< PHP

Namespace MyNamespace {

}
Namespace MySecondNamespace {

}
命名空间{

}
我们也可以在不同的文件中扩展一个名称空间,并且文件包含的文件将自动合并它们。因此,限制大量的名称空间在同一个文件中定义是一个很好的编程实践,就像我们通常为每个类单独定义一个单独的文件一样。

复制代码代码如下所示:

需要注意的是,包含名称空间代码块的{是可选的,可以使用或不使用。事实上,只要我们坚持在文件中只命名一个名称空间,就可以省略{这一点,这也使我们的代码看起来更简洁。
subnamespace

命名空间可以遵循特定的水平,正如我们在我们的计算机上的文件系统目录。空间的主要项目是特别有用的。例如,你的项目需要访问数据库。您可能希望将所有数据库相关的代码,比如数据库异常处理,放在同一个子目录中。

为了保持灵活性,把空间的子目录是非常明智的。这会让你的代码结构更清晰,并使它自动跟随psr-0标准更容易。

PHP使用反斜杠作为分隔符的命名空间,有趣的是,PHP甚至考虑使用一个笑脸:)作为一个命名空间分离器。

subnamespace定义实例:

复制代码代码如下所示:

< PHP

命名空间如何数据库
类连接{

}
您可以使用许多空间的可能:

复制代码代码如下所示:

< PHP

命名空间如何博客认证处理社会;
类推特{

}
需要注意的一点是,PHP不支持命名空间的嵌套定义。下面的代码将导致一个致命错误:名称空间声明不能嵌套。

复制代码代码如下所示:

< PHP

命名空间如何{

命名空间数据库{

类连接{ }

}

}
从命名空间调用代码

如果你要实例化一个类,调用一个函数,或在不同的命名空间的不断使用,你需要使用一个反斜杠。他们可以从三个角度解析:

1。无限定名

2。定义的名字

三.fully qualified names

不合格名称(不合格名称)

这是类的名称、函数或常量,但它不包含任何命名的引用。如果名称空间对您还不熟悉,那么这就是您熟悉的角度。

复制代码代码如下所示:

< PHP

Namespace MyProject;
类{

静态函数static_method()

{

echo'hello,世界!;

}

}
立志 / /不合格的名字,你现在在命名空间(如何 MyClass)

MyClass:static_method();
已定义的名称(限定名称)

这是我们如何使用空间的例子如下:

复制代码代码如下所示:

< PHP

Namespace MyProject;
require'myproject / / PHP的数据库连接;
实例化一个 / /合格的名字,从如何子命名空间的类

连接=新数据库连接();
完全限定名(完全限定名)

名称和不合格的早期使用的是相对于当前的命名空间。上述两种方式只能用于访问当前命名空间和更深的subnamespace。

如果你想访问一个层次,高于此前的命名空间,你需要使用一个完全合格的名称-一个绝对路径而不是相对路径。这可以归因于在命名空间前反斜杠。使用完全定义的名字可以让PHP知道这电话开始从全球的空间而不是命名空间是目前在地方,例子如下:

复制代码代码如下所示:

< PHP

命名空间如何数据库;
require'myproject / /输入PHP文件访问;
访问如何知道输入 / /努力

这一次它将因为/我们使用完全限定名,注意第一个反斜杠

$输入=新 如何知道输入();
对于PHP的内部函数,我们不需要使用完全限定的名称。在当前的命名空间中,PHP将通过调用不存在不合格名称的类或函数来搜索全局空间。

考虑到这个规则,我们可以重写PHP的内部函数如下:

复制代码代码如下所示:

< PHP

Namespace MyProject;
var_dump($查询); / /超载

var_dump($查询); / /内部
我们希望访问全局异常类。

以下将不会工作,因为MyProject 数据库命名空间和类名称不合格/不类称为例外,没有退路的全局空间

抛出异常('query /失败!);
我们使用一个 / /相反,单一的反斜杠表示我们想解决从全球的空间

把新例外('ailed!);
功能var_dump(){

echo'overloaded全球var_dump()!

}
动态调用

PHP是一种动态的语言,与此功能的PHP也可以用来调用命名空间。这基本上是相同的实例化一个变量类,包含变量的文件。在字符串中,命名空间分隔符()使用的PHP也是一个元字符,所以它必须逃跑。

复制代码代码如下所示:

< PHP

命名空间中的其他项目;
project_name美元= 'myproject;

package_name美元= 'database;

class_name美元=连接;
变量文件

需要strtolower($ project_name。package_name美元。' / '。美元。class_name PHP);
变量名称空间中变量类的名称。请注意如何正确使用反斜杠转义

fully_qualified_name = project_name美元美元。package_name美元。class_name美元。;
连接=新fully_qualified_name美元(美元);
namespace关键字

关键字名称空间不仅可以用来定义名称空间,还可以用来显示当前的名称空间,此时它与类中的自关键字相当。

复制代码代码如下所示:

< PHP

Namespace MyProject;
函数运行()

{

echo'running命名空间中!;

}
要如何运行 / /解决

(运行);

解决如何运行 / /明确

命名空间();
__namespace__常数

正如自关键词不能代表当前类的名称、命名空间的关键字不能用来表示当前的命名空间的名称,__namespace__关键字是用来解决这个问题。

复制代码代码如下所示:

< PHP

命名空间如何数据库;
/ / 'myproject 数据库

回声__namespace__;
此关键字非常有用,用于判断当前代码是否以名称空间开头,也可以用于调试代码。

进口或别名

在PHP中,命名空间也支持进口,而进口也被称为别名,类,接口,和命名空间可以进口(别明)。进口是一个非常有用的命名空间中的函数和基本。它允许我们使用外部代码包不用担心名称冲突的使用。关键词的使用可以实现导入功能,您还可以使用关键字在进口时指定一个别名。

复制代码代码如下所示:

使用{姓名}为类、接口或命名空间optional_custom_alias } {
一个完全合格的名称可以通过无限制的别名所取代,因此我们不需要使用完全限定名,当我们每次使用以达到简化代码的目的。进口应该在命名空间级别最高的或全球的空间,并在功能范围的导入功能使用一个非法的语法。

复制代码代码如下所示:

< PHP

命名空间中的其他项目;
这是如何数据库命名空间 /连接类中

require'myproject / / PHP的数据库连接;
如果我们想要访问如何 /数据库连接,必须使用完全限定名为我们在一个不同的名称空间

为连接=新 如何数据库连接();
连接类导入(它与接口的工作方式完全相同)

如何使用 连接数据库;
这也起作用了!在连接类别名的PHP不会发现其他项目连接类

连接=新连接();
该如何数据库 / /导入命名空间

如何使用数据库;
连接=新数据库连接()
我们可以通过使用别名简化上述代码:

复制代码代码如下所示:

< PHP

命名空间中的其他项目;
require'myproject / / PHP的数据库连接;
如何使用 myconnection数据库连接;
连接=新myconnection(美元);
如何使用数据库的名称;
连接名称美元新的连接();
总结

名称空间用于避免定义冲突,并为代码引入更灵活和有组织的方式。要注意的一点是,我们不必使用名称空间;它是面向对象的工作方式。但是,如果使用名称空间,我们的代码可能会达到一个新的水平,而媒体看起来会更高。

相关文章

jQuery的结束()方法使用了详细的解决

jQuery的结束()方法使用了详细的解决

解决方案,方法,结束,使用了,详细,结束()方法的定义和用法: 在结束()方法返回到最新的破坏性操作之前,要匹配的元素列表将更改为前一个的状态。 如果没有破坏性操作,将返回一个空集合。 破坏性操作的概念:任何改变匹配元素的操作: 美元()。Css(颜色) …

浅谈Javascript中字符编码转换问题

浅谈Javascript中字符编码转换问题

编码转换,字符,浅谈,电脑软件,Javascript,要得到一个字符编码的Unicode字符,可以使用string.charcodeat(指数)的方法,它的定义是: strobj.charcodeat(指数) 指数是在strobj对象指定的字符的位置(基于0个指标),并返回0和65535之间的值,例如一个16位整…

jQuery实现tab选项卡效果的方法

jQuery实现tab选项卡效果的方法

方法,选项卡,效果,电脑软件,jQuery,本文演示了jQuery实现选项卡标签效果的方式: var制表符{ { init:函数(){ tab_contents = $(var $ '。标签内容),tab_nav = $($'。选项卡导航); tab_contents.find美元('。标签内容:不(:第一))隐藏(); tab_nav.find美元(李:…

PS教程教你使每个像素清晰可辨。

PS教程教你使每个像素清晰可辨。

清晰,教程,像素,教你,可辨,让我们教你如何使模糊的图像清晰。 在界面和网页设计的人,是不是经常在PS绘制图标,虽然遇到的是一个向量,但仍然会有许多虚假的边缘的缩放,在虚拟边界更加严重的旋转,或是在艾画PS精美矢量图标将变成空的,我们努力设计…

为后来的PS图象处理软件地图工具的

为后来的PS图象处理软件地图工具的

地图工具,图象,使用技巧,处理软件,电脑软件,本教程特别推荐,作者承担技术给出了一个明确的后期修图工具系统,帮助学生全面了解后期修图流程的重点不再是一个渐进的方法,但要掌握系统的使用,把这一事件逃生。 本教程特别推荐,作者承担技术给出了…

全屏加载动画效果的实现

全屏加载动画效果的实现

加载,动画效果,全屏,电脑软件,本文主要介绍一种全屏幕加载动画效果的实现,主要依靠snap.svg动画库文中提到的,需要的朋友可以参考下 如果你参观过Nicolas Zezuka和活动理论的优秀设计网站,你可能已经注意到,动态页面的加载动画显示新的内容之前…

PS教你画彩泼效果美女海报

PS教你画彩泼效果美女海报

教你,海报,效果,美女,电脑软件,本文主要介绍PS教你画色斑效果的美女海报教程,很简单,爱的朋友可以看看。 物质的人,让我们找一个美丽的女人。 1。如果材料不是白色的,以消光,粗略,复制一层颜色。 让我们看看,因为我们想要达到的效果有点类似于绘画…

在CSS中给出游标属性的详细示例。

在CSS中给出游标属性的详细示例。

游标,属性,示例,详细,电脑软件,本文主要介绍CSS中的光标属性,包括常用属性值的使用,如缩放/抓取和抓取。 首先,单词的开头 CSS3的域范围渗透到游标的属性(鼠标手)。这里是在 /缩小/放大,抢抓两挺实用的组合简介。 本文着重展示,开阔视野。 二、…

利用CSS网格布局实现网格的流程

利用CSS网格布局实现网格的流程

网格布局,网格,流程,电脑软件,CSS,本文主要介绍了利用CSS网格布局实现网格的流程。 在HTML文档的文档流,而事实上在CSS网格布局网格流。简单点理解就是,在对网格容器的显式声明,其所有的子元素自动确定为网格单元,网格细胞没有显式设置一个明确…

javascript定时器及取消定时器的优化方法

javascript定时器及取消定时器的优化方法

优化,方法,取消,器及,电脑软件,通常的方法是: 启动定时器: 复制代码代码如下所示: window.setinterval(方法、时间) 方法是计时调用的js方法。 时间是间隔时间,单位是毫秒。 取消计时器: 复制代码代码如下所示: ClearInterval(法); 所以问题来…

CSS的一些必要属性排序

CSS的一些必要属性排序

排序,属性,电脑软件,CSS,本文主要介绍CSS的一些必要性质,以及生词后面的注意事项。 文本 颜色设置文本的颜色。 文本对齐设置文本对齐方式。 文本修饰设置文本的下划线。 文本转换设置字母大小和单词的第一个字母。 线路高度设置线高度 let…

CorelDRAWX7为主人康怎么做条码

CorelDRAWX7为主人康怎么做条码

条码,怎么做,主人,电脑软件,CorelDRAW X7为主人康怎么做条码条形码经常被使用。当你需要设计一个新产品时,你需要一个条形码,但是你如何制作条形码呢下面的课是由CorelDRAW X7条码共享 CorelDRAW X7如何使条码当你需要设计一个新的产品包装时…