摘要: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