之前没有系统学习过古代朝代顺序php
语言,直接上手tp
框架了,所以认为namespace
和u
是tp
框架的一部分,最近学习语言模块的时候遇到了这个问题,所以汇总了一下。
php
中命名空间可以解决两类问题:php
内部的类、函数、常量或第三方类、函数、常量之间的名字冲突。为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名,提高代码的可读性。在没定义命名空间的情况下,所有的常量、类、函数等都在全局空间下。
通过关键字namespace
声明。可以在同一个文件中定义不同的命名空间代码,全局的非命名空间代码与命昨天今天明天名空间中的代码通过大括号的形式可以组合在一起
<?php# 命名空间testanamespace testa{ class testa{} function test(){}}# 命名空间testbnamespace testb{ class testb{} function test(){}}# 全局的非命名空间namespace{ class testc{} function test(){}}
子命名空间
与目录和文件的关系很像,php
命名空间也允许指定层次的命名空间的名称
<?phpnamespace a\b\test; ?>
通过关键字u
引入,通过as
定义别名
引入命名空间三种情况:
非限定名称,或不包含前缀的类名称。在命名空间为a
下,使用$a = new foo();
代表引用的是a\foo
。在命名空间为全局的情况下,使用该方法则引用的是foo
。
限定名称,或包含前缀的名称。在命名空间为a
下,使用$a = new b\foo();
代码引入的是a\b\foo
。在命名为全局的情况下,使用该方法引入的是b\foo
。
完全限定名称,或包含了全局前缀操作符的名称。在命名空间为a
下,$a = new \c\b\fo诺贝尔化学奖获得者o()
;这种情况下,总是引入为c\b\foor
文件
上述三种方式其实就是文件路径中绝对路径和相对路径。
注意:访问任意全局类、函数或变量,都可以使用完全限定名称,例如\strlen()
或者\exception
。
<?phpnamespace fo常遇春简介o;u \a\b\testa; #导入命名空间u \a\b\testb as tb; #导入命名空间,并别名为tb?>气功治病
namespace
和__namespace__
魔术常量namespace
用于定义命名空间,__namespace__
是包含当前命名空间的字符串,在全局的情况下,它是一个空字符串''
。
本文发布于:2023-04-08 10:14:28,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/f616cddd54dea4a83101f5d3d9fa414b.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:php命名空间.doc
本文 PDF 下载地址:php命名空间.pdf
留言与评论(共有 0 条评论) |