PHP中命名空间是怎样的存在以及非限定名称、限定名称、完全限定名称的区别
发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,这篇文章主要介绍"PHP中命名空间是怎样的存在以及非限定名称、限定名称、完全限定名称的区别",在日常操作中,相信很多人在PHP中命名空间是怎样的存在以及非限定名称、限定名称、完全限定名称的区别问题上存
千家信息网最后更新 2025年01月22日PHP中命名空间是怎样的存在以及非限定名称、限定名称、完全限定名称的区别
这篇文章主要介绍"PHP中命名空间是怎样的存在以及非限定名称、限定名称、完全限定名称的区别",在日常操作中,相信很多人在PHP中命名空间是怎样的存在以及非限定名称、限定名称、完全限定名称的区别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"PHP中命名空间是怎样的存在以及非限定名称、限定名称、完全限定名称的区别"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
PHP中命名空间是怎样的存在
子命名空间
命名空间本身就像目录一样,所以命名空间当然也是可以定义子命名空间的,真的就和操作系统的各种目录层级是完全一样的。我们通过简单的例子来看看。首先还是创建三个php文件,其中3-2和3-2-1是使用的相同的二级命名空间,3-2-1在FILE32的基础上继续向下扩展了第三级的命名空间FILE321。他们都是MyProject命名空间的子命名空间。
// file3-1.php
namespace MyProject\FILE31;
function testA31(){
echo 'FILE31\testA()', PHP_EOL;
}
// file3-2.php
namespace MyProject\FILE32;
const CONST_A32 = "file3-2";
function testA32(){
echo 'FILE32\testA()', PHP_EOL;
}
class objectA32{
function test(){
echo 'FILE32\ObjectA', PHP_EOL;
}
}
// file3-2-1.php
namespace MyProject\FILE32\FILE321;
function testA321(){
echo 'FILE321\testA()', PHP_EOL;
}
接下来的使用就很简单了,和使用一级命名空间一样,直接使用use进行导入就可以了。
// 子命名空间
require 'namespace/file3-1.php';
require 'namespace/file3-2.php';
require 'namespace/file3-2-1.php';
use MyProject\FILE31;
use MyProject\FILE32;
use MyProject\FILE32\FILE321;
FILE31\testA31(); // FILE31\testA()
FILE32\testA32(); // FILE32\testA()
FILE32\FILE321\testA321(); // FILE321\testA()
FILE321\testA321(); // FILE321\testA()
同一文件中定义多个命名空间
PHP是允许在一个文件中定义多个命名空间的,但是并不推荐这么做,因为这样可能会带来各种未知的混乱。在这里,我们只要了解到可以这样使用就行了,在日常的开发中还是尽量要避免。
// file4.php
namespace FILE41;
function testA41(){
echo 'FILE41\testA()', PHP_EOL;
}
namespace FILE42;
function testA42(){
echo 'FILE42\testA()', PHP_EOL;
}
在使用中当然也和其他命名空间的使用没什么两样,直接use使用即可。
// 一个文件中多个命名空间
require 'namespace/file4.php';
use FILE41, FILE42;
FILE41\testA41(); // FILE41\testA()
FILE42\testA42(); // FILE42\testA()
非限定名称、限定名称、完全限定名称
不要被术语吓到,这三个术语其实非常好理解。
非限定名称,名称中不包含命名空间分隔符的标识符,例如 Foo 。 限定名称,名称中含有命名空间分隔符的标识符,例如 Foo\Bar 。 名称中包含命名空间分隔符,并以命名空间分隔符开始的标识符,例如 \Foo\Bar。namespace\Foo 也是一个完全限定名称。
直接用例子来说就非常清晰了。
// 非限定名称、限定名称、完全限定名称
use MyProject\FILE32\objectA32 as obj32;
$o = new obj32(); // 非限定名称
$o->test(); // FILE32\ObjectA
$o = new FILE32\objectA32(); // 限定名称
$o->test(); // FILE32\ObjectA
$o = new \MyProject\FILE32\objectA32(); // 完全限定名称
$o->test(); // FILE32\ObjectA
namespace关键字和__NAMESPACE__常量
namesapce,显式访问当前命名空间或子命名空间中的元素。它等价于类中的 self 操作符。 NAMESPACE,包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。
也是很简单的内容吧,直接来看例子。
// file5.php
namespace FILE5;
function test(){
echo __NAMESPACE__ . ': test()', PHP_EOL;
}
// test.php
namespace Pro;
// namespace与__NAMESPACE__
require 'namespace/file5.php';
function test(){
echo __NAMESPACE__ . ': test()', PHP_EOL;
}
namespace\test(); // Pro: test()
\FILE5\test(); // FILE5: test()
到此,关于"PHP中命名空间是怎样的存在以及非限定名称、限定名称、完全限定名称的区别"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
名称
空间
分隔符
文件
学习
例子
多个
标识
标识符
接下来
三个
字符
字符串
更多
术语
目录
还是
帮助
实用
相同
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全教育 调查报告
数据库字段存入数字
重庆hp服务器维修多少钱
三星s8网络安全在哪
360号召网络安全
梁溪区项目软件开发诚信合作
泉州巨赢茂亿网络技术
数据库完备的系统
高速服务器可以买油卡吗
数据库阿拉丁
南京ktv服务器回收价格
电脑服务器关机很慢
数据库 实例数
基础信息网络安全
王者服务器哪个好上分
交通银行软件开发笔试真题
电商网络技术什么是差错
成都电信最快服务器地址
方舟生存进化服务器如何快速挖铁
程序员服务器图片
ktv服务器怎样加歌
主流网络安全设备厂家
校园网的网络安全
国家网络安全创新中心
有哪些网络安全工程师
二维码可以不用服务器吗
xampp安装数据库监听
网络安全意识实验测试
三十岁转行软件开发
漯河互联网科技公司