PHP中的面向对象⑶:命名空间

本文介绍了PHP中的命名空间概念,用于封装类、对象和函数,避免命名冲突。通过示例展示了如何在A.php和B.php中定义相同的类、函数和常量,并通过命名空间来区分它们。在主文件中,通过完全限定名或使用`use`关键字引用这些元素,正确调用了不同命名空间下的类、函数和常量,演示了命名空间在解决命名冲突中的作用。
摘要由CSDN通过智能技术生成

  命名空间是一中封装(类)对象的方法,类似于操作系统中的目录概念,命名空间作用于类、对象、函数、const定义的常量,普通变量、define定义的常量不受命名空间的约束。

  主要是为了避免不必要的同名冲突。

  A.php的内容:

<?php
namespace HaoR;

class BaseObj{
	private $name="";
	public function __construct(string $name){
			$this->name=$name;
	}
	public function GetName(){
		return $this->name;
	}
}

$AppName="应用名称A";
const APPTYPE="类型A";
define("APPNAME","应用A");//全局定义

function GetInfo(){
	return "HaoR的信息输出";
}

?>

  B.php的内容:

<?php
namespace Dawn;
class BaseObj{
	private $name="";
	public function __construct(string $name){
			$this->name=$name;
	}
	public function GetName(){
		return $this->name;
	}	
}

$AppName="应用名称B";
const APPTYPE="类型B";
// define("APPNAME","应用B");//全局定义

function GetInfo(){
	return "Dawn的信息输出";
}

?>

  这个时候要引用这两个文件,因为类名、函数名、常量名相同,那么要使用命名空间来进行区分。

<?php
include "A.php";
include "B.php";

echo (new \HaoR\BaseObj('数学'))->GetName();
echo "<hr/>";
echo \HaoR\GetInfo();
echo "<hr/>";
echo \HaoR\APPTYPE;
echo "<hr/>";
echo $AppName;
echo "<hr/>";

echo (new \HaoR\BaseObj('物理'))->GetName();
echo "<hr/>";
echo \Dawn\GetInfo();
echo "<hr/>";
echo \Dawn\APPTYPE;
echo "<hr/>";
echo $AppName;
echo "<hr/>";
?>

  输出:

 

  还可以使用简写方式。

<?php
include "A.php";
include "B.php";

use \HaoR\BaseObj as MM;
use function \HaoR\GetInfo as NN;
use const \HaoR\APPTYPE as KK;

echo (new MM('数学'))->GetName();
echo "<hr/>";
echo NN();
echo "<hr/>";
echo KK;
echo "<hr/>";
echo $AppName;

echo "<br>--------------------------------------------<hr/>";

echo (new \HaoR\BaseObj('物理'))->GetName();
echo "<hr/>";
echo \Dawn\GetInfo();
echo "<hr/>";
echo \Dawn\APPTYPE;
echo "<hr/>";
echo $AppName;
echo "<hr/>";
?>

  也不影响结果的输出,只是这样麻烦,还是在命名的时候多注意一点更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值