PHP中的命名空间
2015-04-06 14:13
169 查看
关于更多命名空间内容请查看PHP帮助手册点击打开链接
在PHP中,命名空间用来解决在编写类库或应用程序时可能碰到的两类问题:
用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
为很长的标识符名称创建一个别名(或简短)的名称,提高源代码的可读性。
虽然任意合法的PHP代码都可以包含在命名空间中,但只有三种类型的代码受命名空间的影响,它们是:类,函数和常量。
命名空间通过关键字:namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。
<?php
namespace nameSpaceName;
//php代码
?>
导入其他命名空间的内容通过操作符use实现的。
// 导入一个全局类
use \ ArrayObject ;
同一个命名空间可以定义在多个文件中,也允许指定层次化的命名空间的名称。
namespace MyProject \ Sub \ Level ;
也可以在同一个文件中定义多个命名空间。
<?php
namespace MyProject1 {
function A(){ /*...*/ };
}
namespace MyProject2{
function A(){ /*...*/ };
}
?>
在实际项目中,不提倡在同一个文件中定义多个命名空间。这种方式的主要用于将多个 PHP 脚本合并在同一个文件中。
将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。全局代码必须用一个不带名称的 namespace 语句加上大括号括起来。
<?php
namespace A;
namespace {
//全局代码
//由于全局代码和命名空间组合在一起,所以全局代码必须使用不带名称的namespace语句加大括号括起来。
}
?>
如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,在名称前加上前缀"\" 表示该名称是全局空间中的名称,即使该名称位于其它的命名空间中时也是如此。
namespace A \ B{
function fopen () {
/* ... */
$f = \ fopen (...); // 调用全局的fopen函数
return $f ;
}
命名空间的名称定义
1.非限定名称(Unqualified name)
名称中不包含命名空间分隔符的标识符,例如 "namespace Foo"
2.限定名称(Qualified name)
名称中含有命名空间分隔符的标识符,例如 "namespace Foo\Bar"
3.完全限定名称(Fully qualified name)
名称中包含命名空间分隔符,并以命名空间分隔符开始的标识符,例如" namespace \Foo\Bar"。" namespace \Foo "也是一个完全限定名称。
在PHP中,命名空间用来解决在编写类库或应用程序时可能碰到的两类问题:
用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
为很长的标识符名称创建一个别名(或简短)的名称,提高源代码的可读性。
虽然任意合法的PHP代码都可以包含在命名空间中,但只有三种类型的代码受命名空间的影响,它们是:类,函数和常量。
命名空间通过关键字:namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间。
<?php
namespace nameSpaceName;
//php代码
?>
导入其他命名空间的内容通过操作符use实现的。
// 导入一个全局类
use \ ArrayObject ;
同一个命名空间可以定义在多个文件中,也允许指定层次化的命名空间的名称。
namespace MyProject \ Sub \ Level ;
也可以在同一个文件中定义多个命名空间。
<?php
namespace MyProject1 {
function A(){ /*...*/ };
}
namespace MyProject2{
function A(){ /*...*/ };
}
?>
在实际项目中,不提倡在同一个文件中定义多个命名空间。这种方式的主要用于将多个 PHP 脚本合并在同一个文件中。
将全局的非命名空间中的代码与命名空间中的代码组合在一起,只能使用大括号形式的语法。全局代码必须用一个不带名称的 namespace 语句加上大括号括起来。
<?php
namespace A;
namespace {
//全局代码
//由于全局代码和命名空间组合在一起,所以全局代码必须使用不带名称的namespace语句加大括号括起来。
}
?>
如果没有定义任何命名空间,所有的类与函数的定义都是在全局空间,在名称前加上前缀"\" 表示该名称是全局空间中的名称,即使该名称位于其它的命名空间中时也是如此。
namespace A \ B{
function fopen () {
/* ... */
$f = \ fopen (...); // 调用全局的fopen函数
return $f ;
}
命名空间的名称定义
1.非限定名称(Unqualified name)
名称中不包含命名空间分隔符的标识符,例如 "namespace Foo"
2.限定名称(Qualified name)
名称中含有命名空间分隔符的标识符,例如 "namespace Foo\Bar"
3.完全限定名称(Fully qualified name)
名称中包含命名空间分隔符,并以命名空间分隔符开始的标识符,例如" namespace \Foo\Bar"。" namespace \Foo "也是一个完全限定名称。
相关文章推荐
- PHP5.3新特性之命名空间
- PHP 5.3新特性命名空间规则解析及高级功能
- PHP手册-命名空间
- Php命名空间语法小结
- PHP 命名空间解析规则
- PHP5.3新特性之命名空间
- PHP命名空间(Namespace)的使用详解
- php命名空间使用教程
- PHP学习之五:命名空间与异常
- php命名空间
- PHP 5.3 中的命名空间
- PHP命名空间解析规则(告别PHP namespace给你带来的纠结)
- PHP中实现工厂类模式遭遇命名空间无法正确创建相应的解决代码
- PHP手册-命名空间
- PHP内核探索:命名空间
- PHP 5.3新特性命名空间规则解析及高级功能
- PHP的命名空间的实现
- PHP 命名空间
- PHP命名空间解析规则(告别PHP namespace给你带来的纠结)
- PHP 解析有命名空间的 XML