<?php
//============================================================
//------------------命名空间一般的用法-----------------------
// 1.定义本文件的命名空间名称(可省略)
namespace speace_name;
// 2.引入使用了命名空间的文件
include 'namespace.php';
// 3.导入命名空间
use \one_speace_dir\two_speace_dir\method_name;	//method_name 为类名
// 4.使用导入的方法
new method_name();

/* 如果不适用 use 导入命名空间,还可以直接调用文件中的方法
效果相同 */
new \one_speace_dir\two_speace_dir\method_name();
//====================命名空间有效范围=======================
//------------------------------------------------------------
namespace Yourspace;
// 命名空间对变量无效

// 有效:
// 对函数有效
// 对常量有效
// 对类名有效
//=========================子命名空间========================
//------------------------------------------------------------
// 子命名空间 \
namespace My\space;
//======================定义多个命名空间=====================
//------------------------------------------------------------
// 同一个文件里定义多个命名空间
namespace My;

namespace Yours;
//================与系统函数同名的函数访问模式==============
//------------------------------------------------------------
namespace My;
	function var_dump(){}
	//此处调用自定义函数
	var_dump();
namespace Yours;
	//此处直接找全局函数
	var_dump();
//=====================命名空间里访问全局====================
//------------------------------------------------------------
namespace My{
	// 目录一
};

namespace Yours{
	// 目录二
	//如果自己里面没有就去全局里面找
};

//括号外不可有任何东西

namespace{
	//访问全局函数
	//函数名不可与系统函数同名
}
//========================限定名称============================
//------------------------------------------------------------
// 非限定名称		test();
// 限定名称			My\test();
// 完全限定名称	\My\test();

namespace Yours;
	//访问全局的test()
	\My\test();

//============================================================
//----------------------当前命名空间名称---------------------
namespace My;
function test(){
	
}
//此时namespace代表当前
namespace\test();

//当前命名空间名称
echo __NAMESPACE__;
//============================================================
//-----------------------导入命名空间------------------------
namespace My;

	class Person{}

namespace Yours;
	
	// 导入 如果后面是一个类名 那门use的作用就是导入
	use \My\Person;

	class Meizi extends Person{}

//============================================================
//---------------------导入命名空间取别名--------------------
namespace My\test\aaa\bbb;
	function test(){}//在这个空间定义函数
	
namespace Yours;
	//取别名
	use \My\test\aaa\bbb as hello;
	hello\test();//在这个空间调用
//============================================================
//-------------------命名空间的跨文件调用--------------------
namespace My;
	//导入文件
	include 'namespace.php';
	//导入命名空间
	use \Yours\aaa\Person;	//Person 为类名
	//同 new \Yours\aaa\Person();
	new Person();
//------------------------------------------------------------
//============================================================