namespace关键字和__NAMESPACE__常量

原创 2019-04-11 21:53:39 329
摘要:PHP支持两种抽象的访问当前命名空间内部元素的方法, __NAMESPACE__ 魔术常量和namespace关键字。一、常量 __NAMESPACE__ 的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。1. __NAMESPACE__ 示例, 在命名空间中的代码<?phpnamespace 

PHP支持两种抽象的访问当前命名空间内部元素的方法, __NAMESPACE__ 魔术常量和namespace关键字。

一、常量 __NAMESPACE__ 的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。

1. __NAMESPACE__ 示例, 在命名空间中的代码

<?php
namespace  MyProject ;

echo  '"' ,  __NAMESPACE__ ,  '"' ;  // 输出 "MyProject"
?>

2. __NAMESPACE__ 示例,全局代码

<?php

echo  '"' ,  __NAMESPACE__ ,  '"' ;  // 输出 ""
?>

3.使用__NAMESPACE__动态创建名称

常量 __NAMESPACE__ 在动态创建名称时很有用,例如:

<?php
namespace  MyProject ;

function  get ( $classname )
{
     $a  =  __NAMESPACE__  .  '\\'  .  $classname ;
    return new  $a ;
}
?>

二、关键字 namespace 可用来显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符。

1.namespace操作符,命名空间中的代码

<?php
namespace  MyProject ;

use  blah \ blah  as  mine ;  

blah \ mine ();  // 调用函数blah\blah\mine()
namespace\ blah \ mine ();  // 调用函数 MyProject\blah\mine()

namespace\ func ();  //调用函数MyProject\func()
namespace\ sub \ func ();  // 调用函数MyProject\sub\func()
namespace\ cname :: method ();  // 调用MyProject\cname中的静态方法"method" 
$a  = new namespace\ sub \ cname ();
$b  = namespace\ CONSTANT ;  
?>

2.namespace操作符, 全局代码

<?php

namespace\ func ();  // 调用函数func()
namespace\ sub \ func ();  // 调用函数 sub\func()
namespace\ cname :: method ();  // 调用cname中的静态方法  "method" 
$a  = new namespace\ sub \ cname ();  
$b  = namespace\ CONSTANT ;  
?>


批改老师:天蓬老师批改时间:2019-04-12 09:22:58
老师总结:所谓导入外部空间, 只是给本类中引用的外部类名起一个别名罢了, 并不代码加载操作, 所以不能省略掉include , require

发布手记

热门词条