PHP中的命名空间

关于更多命名空间内容请查看PHP帮助手册点击打开链接


在PHP中,命名空间用来解决在编写类库或应用程序时可能碰到的两类问题:

  1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  2. 为很长的标识符名称创建一个别名(或简短)的名称,提高源代码的可读性。

虽然任意合法的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 "也是一个完全限定名称。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值