与C++一样,PHP命名空间是封装项目的方式,以便可以在没有名称冲突的情况下重用相同的名称。
null
- 在许多地方,它可以被看作是一个抽象的概念。它允许 重新澄清 在单独的命名空间中使用相同的函数/类/接口/常量函数,而不会出现致命错误。
- 名称空间是一个分层标记的代码块,其中包含常规PHP代码。
- 命名空间可以包含有效的PHP代码。
- 命名空间影响以下类型的代码:类(包括抽象和特征)、接口、函数和常量。
- 名称空间是使用namespace关键字声明的。
名称空间必须在任何其他代码之前声明为文件顶部的名称空间,只有一个例外:declare关键字。
php
<?php namespace MyNamespaceName { // Regular PHP code function hello() { echo 'Hello I am Running from a namespace!' ; } } ?> |
如果命名空间是全局声明的,那么就声明它 没有 任何名字。
php
<?php namespace { // Global space! } ?> |
在一个PHP代码中可以声明多个名称空间。
php
<?php namespace MyNamespace1 { } namespace MyNamespace2 { } namespace { } ?> |
命名空间用于避免定义冲突,并在代码库中引入更多灵活性和组织性。和目录一样,名称空间可以包含一个称为子名称空间的层次结构。PHP使用反斜杠作为名称空间分隔符。 例子:
php
<?php namespace MyNamespaceName; function hello() { echo 'Hello I am Running from a namespace!' ; } // Resolves to MyNamespaceNamehello hello(); // Explicitly resolves to MyNamespaceNamehello namespace hello(); ?> |
名称空间中的别名
导入是通过使用“use”关键字实现的。或者,它可以使用“as”关键字指定自定义别名。 例子:
php
<?php namespace MyNamespaceName; require 'project/database/connection.php' ; use ProjectDatabaseConnection as Connection; $connection = new Connection(); use ProjectDatabase as Database; $connection = new DatabaseConnection(); ?> |
可以动态调用命名空间代码,不支持动态导入。
php
<?php namespace OtherProject; $title = 'geeks' ; // This is valid PHP require 'project/blog/title/' . $title . '.php' ; // This is not use ProjectBlog itle $title ; ?> |
参考: http://php.net/manual/en/language.namespaces.php
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END