位置: 编程技术 - 正文

PHP新特性详解之命名空间、性状与生成器(php7.0新特性)

编辑:rootadmin

推荐整理分享PHP新特性详解之命名空间、性状与生成器(php7.0新特性),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php 特性,php7.3新特性,php7.0新特性,php 新特性,php 新特性,php7.2新特性,php 新特性,php 特性,内容如对您有帮助,希望把文章链接给更多的朋友!

本文主要跟大家介绍了关于PHP新特性之命名空间、性状与生成器的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍:

1.命名空间

命名空间是什么?

1).命名空间在PHP 5.3中被引入,类似于文件夹的功能。例如Symfony框架中的Request和Response,位于Symfony的命名空间下。

2).命名空间始终应该在<&#;php标签的下面一行。

3).PHP文件的命名空间和操作系统的物理文件系统不同,这是一个虚拟的概念,没有必要和文件系统的目录结构完全对应。虽然如此,绝大多数PHP组件为了兼容广泛使用的PSR4自动加载标准,会把子命名空间放到文件系统的子目录中去。

4).命名空间只是PHP语言的一种记号,PHP解释器会将这种记号作为前缀添加到类、接口、函数和常量的名称前面。

为什么需要命名空间?

1).命名空间使得程序可以像沙盒一样运行,可以和其他开发者编写的代码一起使用。确保了自己的代码和项目可以和项目的第三方依赖一起使用。

声明命名空间

1).顶层命名空间经常用于设定顶层厂商名。2).厂商的命名空间必须具有全局唯一性,子命名空间就没有那么重要,但有助于组织项目的代码。

导入和别名

1).从PHP5.3开始可以导入PHP类、接口和其他命名空间,并为其创建别名。从PHP5.6开始可以导入PHP函数和常量,并为其创建别名。

2).使用use关键字导入代码时无须在开头加上符号,因为PHP假定导入的是完全限定命名空间。use关键字必须出现在全局作用域中即不能出现在类或者函数中,因为这个关键字是在编译的时候使用的,不过,use关键字可以在命名空间声明语句后使用,导入其他命名空间的代码。

从PHP5.6开始我们可以导入函数和常量。

也可以导入常量,

函数和常量的别名与类名的创建方式一样。

PHP新特性详解之命名空间、性状与生成器(php7.0新特性)

最佳实践

1).PHP允许在一个PHP文件中定义多个命名空间。但是这么做容易让人困惑,违背了一个文件一个类的良好实践。2).在一个命名空间中引用全局的命名空间的代码时,需要加上前缀,告诉PHP需要在全局中查找该类,例如PHP原生的异常类。

自动加载

1).命名空间为PHP-FIG制定的PSR4自动加载器奠定了坚实的基础。

2.使用接口

1).就像我可以选择开不一样的车。因为他们都有方向盘、油门和刹车,并且燃料都是汽油。

3.性状

1).形状是类的部分实现(常量、属性和方法),可以混入一个或者多个现有的PHP类中,性状有两个作用,表明类可以做什么(类似接口),提供模块化实践(类似类)。

2).性状使得两个无关的类可以使用相同属性和方法。

3).PHP解释器会把性状复制粘贴到类的定义体中。

4.创建生成器

1)在普通函数中一次或者多次使用yield关键字,不返回值,只生成值,这个函数就是一个生成器。例如:

调用生成器函数的时候,PHP会返回一个属于Generator类的对象,这个对象可以使用foreach()函数迭代,每次迭代,PHP会要求这个对象的实例计算并提供下一个要迭代的值,生成器的优雅之处就是在每产出一个值之后,生成器内部状态会一直停顿和恢复之间切换,直到抵达定义体的末尾或者遇到空的return;语句为止,例如:

以上例子会输出

2).生成器是如何节约内存的?生成一个范围内的数值(错误方式)

预先创建了一个包含很大整数组成的数组,再看使用生成器的例子。

在实际的例如迭代一个4GB大小的文件中功能中,迭代器大展身手。

3).生成器没有为PHP添加新功能,需要实现在数据集中执行快进、快退和查找,最好自己编写类实现Iterator接口,或者使用PHP标准库中的某个原生迭代器。

原生迭代器链接

总结

标签: php7.0新特性

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

上一篇:PHP实现基于面向对象的mysqli扩展库增删改查操作工具类(深入php:面向对象、模式与实践)

下一篇:php实现生成code128条形码的方法详解(php 生成opcode)

  • 个税返还奖励财务人员流程
  • 当月出口的货物,可以过几个月申报吗
  • 城市维护建设税怎么做分录
  • 出口退税是什么部门负责
  • 未开发票如何确认收入并进行申报
  • 硬盘录像机开发板
  • 购买福利用品
  • 增值税采用
  • 购买非专利技术发生的手续费计入什么科目
  • 冲减应付账款
  • 项目所在地怎么填
  • 劳务发票属地原则
  • 营改增后小规模纳税人税率是多少
  • 个人所得税计算器2023
  • 超市购物卡开票可以做账吗
  • 净资产收益率计算公式用期末净资产
  • 小规模税务30万免税政策
  • 合营安排与共同安排区别
  • 委托销售的增值税税率
  • 本月不抵扣的发票不入帐吗
  • 企业汇算清缴后还能更正吗
  • 重分类不成功
  • 去年的发票今年能红字冲销吗
  • 小规模适用税率
  • 财务人员工资计入管理费用还是财务费用
  • 转让无形资产税目征收营业税的是
  • 免征增值税的税额还要交个人所得税吗
  • 进项税额及存货减值
  • 净利润与未分配利润的勾稽关系
  • php如何解决异常处理
  • 贷款钱到账又被转出去
  • 采购合同付款违约条款怎么签
  • 汇算清缴审计报告收费标准
  • 其他应付款期初余额在哪方
  • 进项税额转出怎么做账务处理
  • 简易计税办法和一般计税办法
  • 口腔发炎怎么办最快最有效的方法
  • 葡萄酒企业已纳税多少
  • 小规模纳税人广告费是什么票据类型的
  • 2023 最新最细 vite+vue3+ts 多页面项目架构,建议收藏备用!
  • 预收账款和应收账款的转换
  • vue watch监听localstorage变化
  • 特征融合add
  • 核定征收需要申报吗
  • mongodb 日志
  • 租赁个人房屋租金怎么算
  • 员工福利费的账务处理
  • 差旅费报销金额大于实际发生金额
  • 企业车辆年检费多少钱
  • 电子税务局发票作废流程
  • 税率开成0了怎么办
  • 个体户开出的增值税发票丢失了怎么办?
  • sql语句修改某个字段
  • 企业所得税扣除项目
  • 进项税和销项税月末怎么结转
  • 支付水电费会计
  • 权益性投资收益确认收入时间
  • 主营业务收入的计算公式
  • 公司基建维修承诺书
  • 哪些合同不受法律保护
  • 应收账款是哪个会计科目
  • 领购发票的方式有哪些
  • sql语句优化总结
  • solaris 修改用户 主目录
  • win7旗舰版系统恢复
  • 微软一般什么时候活动
  • 在Windows Server 2008中配置FTP服务
  • 如何关闭win10自带杀毒软件
  • win7系统怎么给软件打开摄像头权限
  • linux 应用程序
  • 安装centos7.0
  • linux源码安装软件的方法介绍
  • Extjs中DisplayField的日期或者数字格式化扩展
  • Android ViewStub 布局延迟加载
  • linux shell中 if else以及大于、小于、等于逻辑表达式介绍
  • android:ViewPager与FragmentPagerAdapter
  • 浅谈插入排序算法在Python程序中的实现及简单改进
  • 地税局上班时间是几点
  • 宁波个人税务查询网
  • 四川投诉电话查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设