[thinkPHP5项目实战_03]子命名空间及命名空间的访问方式

本文介绍了PHP中命名空间的概念及其实现方法,包括子命名空间的定义、命名空间内的元素访问方式等内容,并通过具体示例详细解释了非限定名称访问、限定名称访问及完全限定名称访问的区别。
1.子命名空间定义

PHP提供了层次化的空间命名方式,类似于一个虚拟目录,tp5会自动加载该命名空间

<?php
namespace app1\pro1\item1;
function func(){
	echo "func1";
}
const x = "name1";

2.命名空间的三种访问方式

1)非限定名称访问

访问的元素前面不包含前缀,即访问当前定义的元素。

2)限定名称访问

访问的元素包含前缀名称,简单理解使用虚拟目录的相对路径访问方式

3)完全限定名称访问

访问的元素包含全局的命名空间前缀,理解为使用虚拟目录的绝对路径访问

举例说明:

<?php
namespace app1\pro1\item1; //命名空间前不能有有效代码
header("content-type:text/html;charset=utf-8");
function func(){
	echo "func1";
}
const x = "name1";
class Fruit{
	public $a = '苹果1';
	static $b = '菠萝1';
}

namespace app2\pro2\item2\topic2;
function func(){
	echo "func2";
}
const x = "name2";
class Fruit{
	public $a = '苹果2';
	static $b = '菠萝2';
}

namespace app2\pro2;
function func(){
	echo "func3";
}
const x = "name3";
class Fruit{
	public $a = '苹果3';
	static $b = '菠萝3';
}
// 非限定名称访问,访问当前定义的元素
func(); //输出“func3”
echo x; //name3
$fruit = new Fruit;//实例化类
echo $fruit->a; //苹果3
echo Fruit::$b; //菠萝3

// 限定名称访问,访问当前定义元素下面的item2\topic2路径下的元素
item2\topic2\func(); //输出“func2”
echo item2\topic2\x; //name2
$fruit = new item2\topic2\Fruit;//实例化类
echo $fruit->a; //苹果2
echo item2\topic2\Fruit::$b; //菠萝2

//完全限定名称访问
\app1\pro1\item1\func(); //输出“fun1”
echo \app1\pro1\item1\x; //name1
$fruit = new \app1\pro1\item1\Fruit;//实例化类
echo $fruit->a; //苹果1
echo \app1\pro1\item1\Fruit::$b; //菠萝1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值