将来的你
一定会感谢现在拼命努力的自己

php 命名空间

版本(PHP 5 >= 5.3.0, PHP 7)

命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错误。 

在PHP中,命名空间用来解决在编写类库或应用程序时创建可重用的代码如类或函数时碰到的两类问题: 

  • 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。 
  • 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

<?php

namespace chengdu;

function getName(){

    return "chengdu";

}

namespace nanchong;

function getName(){

    return "nanchong";

}

//示例

//非限定名称

echo getName();   //输出nanchong 找命令空间最近的函数,没有会报错

//限定名称

echo chengdu\getName()  //报错,相对定位找nanchong\chengdu\getName() 不存在

//完全限定名称

echo \chengdu\getName() // 绝对定位,输出chengdu  

//命名空间针对:函数、类名、常量三者其作用,在命名空间里面把这三种统称为元素

子空间使用

<?php
namespace sichuan\chengdu;
function getName(){
	return "chengdu";
}

namespace sichuan\nanchong;
function getName(){
	return "nanchong";
}

namespace sichuan\mianyang;
function getName(){
	return "mianyang";
}

echo getName(); //输出 mianyang
echo sichuan\nanchong\getName() ;   //报错,会找sichuan\mianyang\nanchong\getName()
echo \sichuan\nanchong\getName() ;   //输出nanchong 使用完全限定
?> 

别名和导入

namespace chengdu;
function getName(){
	return "chengdu";
}
class Person {
 static $name = "chengduren";

}

namespace nanchong;
function getName(){
	return "nanchong";
}

namespace mianyang;
function getName(){
	return "mianyang";
}
//第一种使用:
use chengdu\Person;  //引入chendu空间内的Person类元素
echo Person::$name;  //输出chengduren

//第二种使用:
use chengdu;
echo chengdu\getName()  //输出chengdu
echo chengdu\Person::$name; //输出chengduren

<?php
namespace sichuan\chengdu;
function getName1(){
	return "chengdu";
	
}
class Person {
	static $name = "chendduren";
	
}
namespace sichuan\nanchong;
function getName2(){
	return "nanchong";
	
}
class Person {
	static $name = "nanchongren";
	
}
//只引入空间
use sichuan\chengdu;
echo chengdu\getName1();
echo chengdu\Person::$name;

//引入空间和元素
use sichuan\chengdu\Person;
echo Person::$name;  //报错因为最近空间和引入的空间有相同的类

#修改
use sichuan\chengdu\Person as pon;
echo pon::$name;  //输出chendduren
赞(48) 打赏
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除,联系邮箱:contact@3yyy.top。文章观点不代表本站立场。本站原创内容未经允许不得转载:三叶运维 » php 命名空间
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏