modern php笔记---2.1、特性(命名空间、特性、性状)

一、总结

一句话总结:

legend2是真的非常好用,资质起码提升5倍,也就是学习效率提升了起码5倍

1、命名空间实质?

从技术层面来看,命名空间只是php语言中的一种记号,php解释器会将其作为前缀添加到类、接口、函数和常亮的名称的前面。

2、厂商命名空间?

厂商命名空间是最重要的命名空间,厂商命名空间是最顶层命名空间,用于识别品牌或所属组织,必须具有全局唯一性。子命名空间没那么重要,不过有助于组织项目的代码。

3、use关键字导入?

使用use关键字导入代码时无需在开头加上\符号,因为php假定导入的是完全限定的命名空间。

4、一个文件中使用多个命名空间?

类中直接namespace关键字声明即可

<?php
namespace Foo{
    //在这声明类、接口、函数和常量
}
namespace Bar{
    //在这声明类、接口、函数和常量
}

5、php接口是什么?

接口是两个php对象之间的契约,其目的不是让一个对象依赖另一个对象的身份,而是依赖另一个对象的能力。

6、使用接口好处?

使用接口编写的代码更灵活,能委托别人实现细节。

7、php性状(trait)?

性状是类的部分实现(即常量,属性和方法),可以混入一个或多个现在的php类中。
性状有两个作用:表明类可以做什么(像是接口);提供模块化实现(像是类)。

8、让两个无关的php类具有类似的行为,应该怎么做呢?例如,RerailStore和Car两个php类的作用十分不同,而且在继承层次结构中没有共同的父类。不过这两个类都应该能使用地理编码技术转换成经纬度,然后在地图上显示。?

1、父类:我的第一反应是创建一个父类Geocodable(这么做不好),让Retailstore和Car都继承这个类。这种解决方法不好,因为我们强制让两个无关的类继承同一个祖先,而且很明显,这个祖先不属于各自的继承层次结构。
2、接口:我的第二反应是创建Geocodable接口(这么做更好),定义实现地理编码功能需要哪些方法,然后让Retailstore和car两个类都实现这个接口。这种解决方法好,因为每个类都能保有自然的继承层次结构。不过,我们要在两个类中重复实现相同的地理编码功能,这不符合DRY原则。
3、性状:我的第三反应是创建Geocodable性状(这么做最好),定义并实现地理编码相关的方法,然后把在Retailstore和Car两个类中混入这个性状。这么做不会提乱这两个类原本自然的继承层次结构。

9、如何创建性状?

<?php
trait MyTrait{
    //这里是性状的实现
}

trait关键词,像类和接口一样

10、如何使用性状?

PHP性状的使用方法很简单,把use MyTrait;语句加到PHP类的定义体中即可。

<?php
class MyClass{
    use MyTrait;
    //这里是类的实现
}

11、性状执行的原理?

PHP解释器在编译时会把性状复制粘贴到类的定义体中,但是不会处理这个操作引入的不兼容问题。如果性状假定类中有特定的属性或方法(在性状中没有定义),要确保相应的类中有对应的属性和方法。

二、内容在总结中

转载于:https://www.cnblogs.com/Renyi-Fan/p/11315800.html

modern php笔记---2.1、特性(命名空间、特性、性状)相关推荐

  1. oracle exacc,【学习笔记】Oracle 11GR2新特性Adaptive Cursor Sharing(ACS)

    天萃荷净 Oracle研究中心学习笔记:分享一篇关于Oracle 11.2.0.1 11Gr2数据库最新版本中最新特性Adaptive Cursor Sharing(ACS)深入研究笔记. 本站文章除 ...

  2. C# 10 新特性 —— 命名空间的变化

    C# 10 新特性 -- 命名空间的变化 Intro C# 10 针对命名空间做了一些改变,主要是 Global Usings 和 File-scoped Namespace,我们前面分享的示例其实也 ...

  3. oracle12c口令文件,学习笔记:Oracle 12C ASM 新特性 共享密码文件

    天萃荷净 测试试验ORACLE 12C ASM 新特性 共享密码文件的详细过程 在ORACLE 12C之前大家都知道密码文件是存放在?/dbs或者?/database中,如果要修改修改sysdba权限 ...

  4. oracle中overwrite写法,【学习笔记】Oracle 11G新特性restart的深入研究案例

    [学习笔记]Oracle 11G新特性restart的深入研究案例 时间:2016-11-26 22:35   来源:Oracle研究中心   作者:网络   点击: 次 天萃荷净 Oracle研究中 ...

  5. [C#]Attribute特性(2)——方法的特性及特性参数

    上篇博文[C#]Attribute特性介绍了特性的定义,类的特性,字段的特性,这篇博文将介绍方法的特性及特性参数相关概念. 3.方法的特性 之所以将这部分单列出来进行讨论,是因为对方法的特性查询的反射 ...

  6. 第十一节:特性(常见的特性标签、自定义特性、特性的使用案例)

    一. 基本概念 1. 什么是特性? MSDN官方给出的定义时:公共语言运行时允许添加类似关键字的描述声明,叫做特性,它对程序中的元素进行标注,如类型.字段.方法和属性等.Attribute和Micro ...

  7. 23.Flink-高级特性-新特性-Streaming Flie Sink\介绍\代码演示\Flink-高级特性-新特性-FlinkSQL整合Hive\添加依赖和jar包和配置

    23.Flink-高级特性-新特性-Streaming Flie Sink 23.1.介绍 23.2.代码演示 24.Flink-高级特性-新特性-FlinkSQL整合Hive 24.1.介绍 24. ...

  8. cad特性匹配快捷键命令_cad特性匹配快捷键命令_CAD快捷特性和特性匹配

    原标题:CAD快捷特性和特性匹配 在CAD中,绘制的每一个图形对象都具有自己的特性,有些特性是基本特性,适用于多数的对象,例如,图层.颜色.线型和打印样式.有些特性是专用于某个对象的特性,例如,圆的特 ...

  9. # 22.Flink-高级特性-新特性-异步IO\原理

    22.Flink-高级特性-新特性-异步IO-了解 22.1.原理 22.1.1.异步IO操作的需求 https://nightlies.apache.org/flink/flink-docs-rel ...

最新文章

  1. 2021-2027年中国智能马桶盖行业市场研究及前瞻分析报告
  2. 在C++平台上部署PyTorch模型流程+踩坑实录
  3. 联发科有没有高端处理器_联发科陷入“危机”,高端处理器无人使用,只能依靠OPPO?...
  4. 学python最好的方式-自学Python有什么好方法吗?老男孩专业Python培训
  5. 学生系统优化(二)- - 窗体代码
  6. php分页上一页下一页判断,分页(上一页,下一页)
  7. materialrefeshlayout下拉刷新,上拉加载更多
  8. 动态加载TreeView
  9. 练习:写一个脚本,完成以下任务
  10. Python升级后ssl模块不可用问题解决和浅析
  11. app营销实训报告_第七届全国金融与证券投资模拟实训大赛圆满落幕!
  12. 网卡不兼容linux系统,CentOS与Broadcom 5709兼容性问题导致业务网络中断
  13. UnRaid安装CloudDrive以实现阿里云盘、天翼云盘、115网盘挂载
  14. canvas视频录制
  15. 投资的本质到底是什么?
  16. GC算法精解(五分钟让你彻底明白标记/清除算法)
  17. 华为防火墙简介及其工作原理
  18. 一阶线性差分方程通项公式求解
  19. 大班线描机器人_大班美术lbrack;漂亮的机器人rsqb;活动设计
  20. codeforces 1064 E. Dwarves, Hats and Extrasensory Abilities (交互题,二分)

热门文章

  1. 互联网+工业,从哪里开始?
  2. 为IoT和大数据项目分配IT资源
  3. WPF学习笔记——在“System.Windows.StaticResourceExtension”上提供值时引发了异常
  4. SocketType 枚举----指定 Socket 类的实例表示的套接字的类型
  5. python创建文件的编码格式
  6. 如何关联php5与apche,PHP5在Apache下的两种模式的安装_php
  7. 蓝桥杯 ALGO-148 算法训练 5-1最小公倍数
  8. 蓝桥杯 ADV-162 算法提高 题目1 最大最小值
  9. 测试用什么编译java代码_java – 测试编译器
  10. mysql映射表_MySQL报错找不到问题?可能是你的SQL用了关键字