在这里中我们介绍了php教程命名空间的用途和namespace关键字,在这篇文章中我们将介绍一下use命令的使用以及php如何解析命名空间的名字的。
namespace bakbaba;
function bab(){
echo "bi";
}
namespace kkk;
function k1(){
echo "k1";
}
bakbababab();//在kkk的命名空间下使用别的命名空间,注意前面的
use bakbaba as b;//依旧在kkk的命名空间下,但是用别名的的时候以下方法也正确
#use bakbaba as b;//前面可以不使用号
bbab();//使用别名下命名空间的时候前面不该有号
k1();//调用该函数没有报错,说明use不影响当前当前命名空间
< ?php
// application library 1
namespace applib1;
const myconst = 'applib1myconst';
function myfunction() {
return __function__;
}
class myclass {
static function whoami() {
eturn __method__;
}
}
?>
lib2.php
< ?php
// application library 2
namespace applib2;
const myconst = 'applib2myconst';
function myfunction() {
return __function__;
}
class myclass {
static function whoami() {
eturn __method__;
}
}
?>
幸好在手册中发现这么一段代码,故手册中其他关于namespace的内容,就可以忽略了,直接看下面的代码
<?php
namespace a;
use bd, ce as f;// 函数调用
foo(); // 首先尝试调用定义在命名空间"a"中的函数foo()
// 再尝试调用全局函数 "foo"foo(); // 调用全局空间函数 "foo"
myfoo(); // 调用定义在命名空间"amy"中函数 "foo"
f(); // 首先尝试调用定义在命名空间"a"中的函数 "f"
// 再尝试调用全局函数 "f"// 类引用
new b(); // 创建命名空间 "a" 中定义的类 "b" 的一个对象
// 如果未找到,则尝试自动装载类 "ab"new d(); // 使用导入规则,创建命名空间 "b" 中定义的类 "d" 的一个对象
// 如果未找到,则尝试自动装载类 "bd"new f(); // 使用导入规则,创建命名空间 "c" 中定义的类 "e" 的一个对象
// 如果未找到,则尝试自动装载类 "ce"new b(); // 创建定义在全局空间中的类 "b" 的一个对象
// 如果未发现,则尝试自动装载类 "b"new d(); // 创建定义在全局空间中的类 "d" 的一个对象
// 如果未发现,则尝试自动装载类 "d"new f(); // 创建定义在全局空间中的类 "f" 的一个对象
// 如果未发现,则尝试自动装载类 "f"// 调用另一个命名空间中的静态方法或命名空间函数
bfoo(); // 调用命名空间 "ab" 中函数 "foo"
b::foo(); // 调用命名空间 "a" 中定义的类 "b" 的 "foo" 方法
// 如果未找到类 "ab" ,则尝试自动装载类 "ab"d::foo(); // 使用导入规则,调用命名空间 "b" 中定义的类 "d" 的 "foo" 方法
// 如果类 "bd" 未找到,则尝试自动装载类 "bd"bfoo(); // 调用命名空间 "b" 中的函数 "foo"
b::foo(); // 调用全局空间中的类 "b" 的 "foo" 方法
// 如果类 "b" 未找到,则尝试自动装载类 "b"// 当前命名空间中的静态方法或函数
ab::foo(); // 调用命名空间 "aa" 中定义的类 "b" 的 "foo" 方法
// 如果类 "aab" 未找到,则尝试自动装载类 "aab"ab::foo(); // 调用命名空间 "ab" 中定义的类 "b" 的 "foo" 方法
// 如果类 "ab" 未找到,则尝试自动装载类 "ab"
?>