php 关于namespace的一下总结

php的namespace已经推出很久了,但是一直没有机会用到,今天有时间详细看了一遍,为了巩固阅读效果小小的总结一下。
1 声明 namespace xx 例:namespace Foo;
2 第一个namespace 声明之前不能有任何代码
3 可以是用namespace{}将声明中的内容包含起来 namespac Foo{}
4 一个文件中可以有多个namespace 声明
5 将全局的非命名空间代码和命名空间代码组合在一起的时候必须使用大括号形式,全局代码必须使用一个不带名称的namespace语法加大括号括起来。例
<?php
namespace pro1{
    class foo{}
}
namespace {
    globfun(){}
}
namespace pro2{
    .....
}
6 在命名空间中 php 遇到类时总是解析到当前命名空间下的xx类。如果要使用php基础类或全局类必须使用全局限定名称“\” ,否则会抛出类名不存在的错误。
对于函数和常量来说,如果该命名空间内不存在该函数或常量,那么php会使用全局空间中的函数或常量。
例:
<?php
namespace A\B
class Exception extends \Exception {}

7 可以定义子命名空间。和目录类似命名空间包括 相对路径形式决定路径形式
<?php
namespace blog{
 function create(){
  echo 'blog\creat';
 }
//相对路径方式 被当做当前blog空间下的sub空间中的函数 subcreate  blog\sub
sub\ subcreate();
//绝对路径方式
\blog\sub\subcreate();
}
namespace blog\sub{
 //被认为是 当前 blog\sub空间下的子空间。
 blog\create();  //undefined function blog\sub\blog\create()
 //正确方式 采用绝对路径形式
 \blog\create();  
function subcreate(){
  echo 'subcreate';
 }
}
7 常量 __NAMESPACE__ 输出当前空间名称
   在没有命名空间的地方使用返回空字符串“”
8 命名空间别名 use
   php不支持导入函数和常量
   支持对类名或命名空间
例:
<?php
  use  My \ Full \ Classname  as  Another ;
//与  use My\Full\NSname as NSname  相同
 use My\Full\NSname
//导入全局类
use \ArrayObject;
9 use 关键词 不支持相对路径模式 
例:
<?php
namespace blog{
 //错误方式 use关键词不支持相对模式
use sub as subt;
//正确方式 
 use blog\sub as subt;
 subt\subcreate();
 
}
namespace blog\sub{
 function subcreate(){
  echo 'subcreate';
 }
}
10 php支持在一行中使用多个use语句
<?php
use My\Full\Classname as AnotherMy\Full\NSname;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值