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

二、内容在总结中

 

最新文章

  1. PHP中return 和 exit 、break和contiue 区别与用法
  2. 用css实现条纹背景
  3. python执行linux的shell命令
  4. 使用POI读取excel文件内容
  5. SharePoint文档库文件大小限制(win2008+II7)问题
  6. ASP.NET 尖括号 百分号 井号 等号 的用法
  7. adb shell dumpsys package 查看versionCode
  8. php - 微信 - 缓存access_token类。
  9. (三)ajax请求不同源之websocket跨域
  10. Layui 写一个简单的后台页面
  11. topcoder SRM642 div1 hard WheelofFortune
  12. Ubuntu下使用cmake生成可执行文件
  13. 【C语言】字节对齐问题(以32位系统为例)
  14. react router @4 和 vue路由 详解(三)react如何在路由里面定义一个子路由
  15. 小朋友学Linux&lt;一&gt;基础篇
  16. php开启与关闭错误提示
  17. 《Python》 面向对象初识
  18. 《DSP using MATLAB》Problem 4.23
  19. Memcache 学习笔记(一)----Memcache — Linux部署
  20. 如何打卡后缀为3ds的文件

热门文章

  1. gym102201F_Fruit Tree
  2. display:inline-block元素之间空隙的产生原因和解决办法
  3. Echarts多个图表响应式以及其他问题
  4. Vmware 安装 ghost 版 win 7
  5. java并发编程:线程同步和锁
  6. Instr()函数用法
  7. [易学易懂系列|rustlang语言|零基础|快速入门|系列文章]
  8. u-boot bl _main分析
  9. small task
  10. python 字符串方法及列表,元组,字典(一)