<?php
/*
php 命名空间namespace 存放类 函数 常量
通过namespace关键字声明命名空间
/
namespace China; // 定义一个 my_space 的空间 , 命名空间定义必须在文本第一行
header(“Content-Type:text/html;charset=utf-8”);
function A(){
echo “中国人”;
}
namespace USA;
function A(){
echo “He is an American.”;
}
// 调用
A(); // 就近原则
echo “
“;
\USA\A(); // \ 表示 公共空间
echo “
“;
\China\A();
echo “
“;
// 多级命名空间 公共空间 \ 命名空间 China\Shanghai\PuDong 空间元素 Student
namespace China\beijing;
class A{
}
namespace usa\Washington;
class A{
}
$a = new A(); // 就近原则
$b = new \usa\Washington\A();
$c = new \China\beijing\A();
var_dump($a);
echo “
“;
var_dump($b);
echo “
“;
var_dump($c);
echo “
“;
// 访问空间元素 非限定名称访问 完全限定名称访问 限定名称访问
namespace China\beijing\shunyi;
function A(){
echo “顺义.
“;
}
namespace China\beijing;
function A(){
echo “北京.
“;
}
A(); // 就近原则 非限定名称访问 (北京)
\China\beijing\A(); // 完全限定名称访问 (北京)
shunyi\A(); // 限定名称访问 (顺义)
\China\beijing\shunyi\A(); // 绝对路径 (顺义)
// use 引入命名空间
// 引入命名空间规则 \ + 引入空间 + (去除公共部分,公共部分只能有一级)
namespace China\beijing\shunyi;
function getinfo(){
echo “李白
“;
}
namespace USA;
function getinfo(){
echo “aaaaa”;
}
use China\beijing\shunyi; // 引入命名空间
getinfo(); // aaaaa
shunyi\getinfo(); // 李白 \China\beijing\shunyi\getinfo()
// 给命名空间起名
namespace china\beijing;
class B{
}
function b(){
echo “cccc”;
}
namespace usa\hsd;
class A{
}
function a(){
echo “bbbb”;
}
use china\beijing\B as chinaB;
use function china\beijing\b as i; // 将方法 a 重命名为 i
i(); // cccc
// 若页面没有namesp声明,这个页面的元素在公共空间下
// 命名空间只能存放 类、函数、 const 常量
// 第一个namesp 前不能有任何代码
// 包含文件影响当前的命名空间
?>
