PHP中命名空间是怎样的存在以及非限定名称、限定名称、完全限定名称的区别
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,这篇文章主要介绍"PHP中命名空间是怎样的存在以及非限定名称、限定名称、完全限定名称的区别",在日常操作中,相信很多人在PHP中命名空间是怎样的存在以及非限定名称、限定名称、完全限定名称的区别问题上存
千家信息网最后更新 2024年11月14日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安全错误
数据库的锁怎样保障安全
慈溪应用软件开发周期
开车精灵和省油宝软件开发
考个数据库
我的世界服务器如何建造仓库指令
数据库开发相关简历
注册微信号无法连接服务器
阿里云数据库技术交流
江苏赛迪恒业网络技术
石嘴山网络安全支撑单位
思维导图转数据库
网络技术入侵
时间规划软件开发
二维码扫描如何连接数据库
app的数据库在哪存放
厦门系统软件开发
网络安全型wep
奶块新的服务器
奥的斯服务器怎么看主板
国家网络安全学院投资
杉果服务器
海底服务器散热的模型评价
服务器eth0是管理口吗
应用服务器是不是办公用品
公安局网络安全管理岗位视力
服务器管理器没有iis
数据库怎样应用到前台
桌面共享软件开发哪个品牌好
西安东塔网络安全学院小白入门
服务器系统缓存
绍兴电子网络技术哪家好