位置: 编程技术 - 正文

PHP关键特性之命名空间实例详解(php关键字描红)

编辑:rootadmin

推荐整理分享PHP关键特性之命名空间实例详解(php关键字描红),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php关键字查询,php关键字的意思,php关键字的意思,php可以使用关键字来命名的是,php可以使用关键字来命名的是,php关键字的意思,php使用( )关键字来创建对象,php关键字的意思,内容如对您有帮助,希望把文章链接给更多的朋友!

命名空间主要是为了解决代码中类和函数可能存在冲突的问题,而这个特性其他语言一早就有,PHP则是姗姗来迟,它的出现催生了 PSR-4 的诞生,从而也催生了 Composer 的兴起,所以是非常重要的特性。

命名空间的定义

命名空间是一个容器,这个容器主要是为了识别其下的类和函数。一旦定义了命名空间,它下面的代码就属于这个命名空间了,所以命名空间的定义要在代码的最开始行。

对于同一个包来说,同一个命名空间或者子命名空间的代码没有必要在一个 PHP 文件中定义,子命名空间下的代码是为了完成特定模块的工作,组合起来就是一个包完整的命名空间。

假如编写的代码没有定义命名空间,那说明它属于全局的命名空间( 符号),所以能够直接引用类或者函数(不用添加 符号)。

引用命名空间标识符的三种方式

(1)Fully-qualified name

类似于操作系统上的绝对路径,而且是完整的路径,所以在理解的时候不会有误解。

比如在 new ABC ,那么 C 就被会解析到 AB 命名空间下的 C 类。

(2)Qualified name

类似于操作系统上的相对路径,它包含部分名字并被引用到当前的命名空间。

比如 BC() 在命名空间 A 下调用,则最终引用的命名空间就是 ABC()。

(3)Unqualified name

类似于Qualified name,但是没包括子命名空间。

比如 C() 在命名空间 AB 下调用,则最终引用的命名空间就是 ABC()。

PHP关键特性之命名空间实例详解(php关键字描红)

通过一个例子来说明三种引用方式:

注意:

&#;Inside a namespace,假如在 current scope 没有发现函数和常量的定义,PHP 不会报错。而是去全局命名空间中寻找。

&#;Inside a namespace,假如在 current scope 没有发现类的定义,则 PHP 会直接报错,不会去全局域中找对应的类,所以假如你需要引用一个 internal 或用户自定义的类,必须使用完全限定名称。

先举个简单的例子,首先编写一段代码(定义在命名空间下),命名为 function.php :

再编写一段代码 test.php,也是处于命名空间之下的代码:

导入,别名

假如要使用的命名空间层级很长且数量很多,那么在使用的时候特别麻烦,所以可以使用 use 关键字导入命名空间、类、常量、函数等,然后可以使用它们直接引用完整的名称。而 alias 关键字可以给导入的类和函数等重命名。

举个例子如何使用 use 关键字,该代码处于全局命名空间之下:

总结:

&#;和 Python 不一样,PHP 中的命名空间是语义上的一种概念,和具体代码的位置、布局没有关系,换句话说,使用命名空间的代码需要自己引入库文件(所有文件),至于库文件如何组织无所谓;而在 Python 中,假如模块或包中有一个 __init__.py 文件,则 Python 解析器会自动引入包或所有模块的文件。

&#;PHP 中作用域的概念很弱化,全局域和局部域分的很清楚,比如在函数或类中无法引用全局空间中的变量。而在命名空间则不同,定义命名空间的代码,假如找不到对应命名空间下的常量和函数,则会使用全局的常量和函数;而假如找不到对应名命名空间下的类(包括自定义类),则代码直接报错。

&#;通过 use 关键字使用命名空间的,无须通过完全限定名称的方式( 符号)导入,因为 PHP 已经假设导入的是完全限定的命名空间。

&#;通过 use 关键字可以导入常量、函数、类、接口、其他命名空间。

&#;命名空间是一种语言特性,为了追求更有效的使用,应该有一种使用规范和自动加载机制,这就是 PSR-4 规范。

以上所述是小编给大家介绍的PHP关键特性之命名空间实例详解,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Laravel实现表单提交 首先,先做一个简单的表单页面htmlhead/headbodyformaction="/submit"method="post"inputtype="text"name="a"/inputinputtype="text"name="b"/inputinputtype="text"name="c"/inputinputtype="submit"

Laravel中任务调度console使用方法小结 适用场景:分析数据(日志)phpartisanmake:console你的命令类名示例:phpartisanmake:consoleCheck在appConsoleCommands目录下已生成一个Check.php文件phpnamespaceAppConsol

ThinkPHP框架实现数据增删改 使用TP框架主要是比较简单一些,之前我们写增删改,代码量相对来说还是比较多的,这里利用tp框架写起来是非常简单的,大大的减少了代码量这里我

标签: php关键字描红

本文链接地址:https://www.jiuchutong.com/biancheng/293559.html 转载请保留说明!

上一篇:PHP 中使用explode()函数切割字符串为数组的示例(php的exec)

下一篇:Laravel实现表单提交(laravel datatable)

  • 个人出售二手房要交增值税吗
  • 代扣个税的会计分录怎么做
  • 所得税费用会计准则
  • 增值税起征点的规定只适用于
  • 交房前是否需要给房产局交房租维修费
  • 农产品为什么价格低
  • 资产的计量属性主要包括哪些
  • 当月冲销的作废发票怎么账务处理?
  • 技术服务费收入怎么确认收入
  • 增值税专用发票的税率是多少啊
  • 个税手续费返还会计分录
  • 个人所得税返还奖励财务人员做账
  • 2018水利基金税率是多少?怎么算
  • 买二手面包注意事项
  • 生产性服务业定义
  • 融资性售后回租按什么缴纳增值税
  • 租赁合同印花税怎么交,一年一次吗
  • 开票信息银行账号有一个横杠
  • 失控发票一定要盖章吗
  • 以现金收回已核销的不良贷款分录?
  • 电脑开机弹出documents文件夹
  • 支付宝支付凭证图片
  • 清除文件夹exe病毒工具
  • 预存500抵扣1000是几折活动?
  • 如何删除文档中多余的页
  • 压缩文件损坏怎么回事
  • ajax调用php函数
  • Win11 Build 22449.1000 预览版发布(附更新修复已知问题汇总)
  • 楼房贷款需要什么手续没有银行流水怎么办
  • php调试工具哪个好用
  • 小规模纳税人超标认定一般纳税人
  • anjedi编辑器
  • 论文如何学
  • 公司建造厂房
  • hashmap教程
  • 个人提供翻译服务
  • 不是自己生产的产品可以用自己的商标吗
  • 进项大于销项附加税怎么处理
  • 建筑工地仓库管理流程
  • 商品流通企业购入的商品采用售价金额法核算的
  • 申报表填完后下一步是什么
  • 获取验证码平台
  • 普通发票应怎么开具
  • 纳税申报资料报表怎么填
  • 水电费计提是什么意思
  • 银行理财产品是单利还是复利
  • 主营业务收入的明细科目怎么写
  • 商贸企业 税收 政策规定
  • 个人咨询费发票怎么开
  • 会计核算以什么为主
  • 出口退税后发生退货补缴怎么算增值税
  • 销售返现如何做账务处理
  • 注册资本转出可以吗
  • 公司员工住宿费标准
  • 企业凭证处理流程图
  • 百旺金赋开票系统图标
  • 暂领款是什么意思
  • 汽车保险费能不能不交
  • 升级尝鲜
  • winxp系统停止服务
  • w10英雄联盟老是崩溃
  • win7任务栏快捷启动如何设置
  • win8系统磁盘清理在哪里
  • linux的awk命令大全
  • smon进程
  • win8如何更新驱动
  • 升级安装windows并保留文件
  • 苹果mac系统关机怎么关
  • number mac
  • win 7系统双独立显卡设置
  • assetstore怎么下载资源包
  • career和calling的区别
  • 使用jquery
  • jquery+ajax+text文本框实现智能提示完整实例
  • 什么叫开源库
  • python3中raw_input的用法
  • 湖北省地方税务局公告2014年第7号
  • 杭州国税咨询电话
  • 纳税筹划是什么课
  • 经济增长的术语
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设