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

二、内容在总结中

 

modern php笔记---2.1、特性(命名空间、特性、性状)的更多相关文章

  1. 《PHP7底层设计与源码实现》学习笔记1——PHP7的新特性和源码结构

    <PHP7底层设计与源码实现>一书的作者陈雷亲自给我们授课,大佬现身!但也因此深感自己基础薄弱,遂买了此书.希望看完这本书后,能让我对PHP7底层的认识更上一层楼.好了,言归正传,本书共1 ...

  2. <NET CLR via c# 第4版>笔记 第18章 定制特性

    18.1 使用定制特性 FCL 中的几个常用定制特性. DllImport 特性应用于方法,告诉 CLR 该方法的实现位于指定 DLL 的非托管代码中. Serializable 特性应用于类型,告诉 ...

  3. modern php笔记---php (性状)

    modern php笔记---php (性状) 一.总结 一句话总结: trait是和继承一个层次的东西 一个类use MyTrait;后,trait中的方法覆盖父类方法,当前类中的方法覆盖trait ...

  4. [C#]Attribute特性(3)——AttributeUsage特性和特性标识符

    相关文章   [C#]Attribute特性 [C#]Attribute特性(2)——方法的特性及特性参数 AttributeUsage特性 除了可以定制自己的特性来注释常用的C#类型外,您可以用At ...

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

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

  6. swift 声明特性 类型特性

    原文地址:http://www.cocoachina.com/newbie/basic/2014/0612/8801.html 特性提供了关于声明和类型的很多其它信息.在Swift中有两类特性,用于修 ...

  7. modern php笔记---1、新时代的php

    modern php笔记---1.新时代的php 一.总结 一句话总结: php有Zend Engine 和 Facebook开发的 HipHop Virtual Machine两套引擎 1.php也 ...

  8. opencv2.4.13+python2.7学习笔记--opencv中的Gui特性--图片:读图像,显示图像,保存图像

    阅读对象:可以配置opencv+Python环境的任何人,毕竟写这篇文章的人就是小白. 1.环境说明 1.1opencv版本: 1.2Python版本: 1.3系统:win7 注: (1)opencv ...

  9. TypeScript学习笔记 (一)基础特性

    一. 字符串新特性 1. 多行字符串 var str = ``; 2. 字符串模板 var world = "world"; var str = `hello ${world}`; ...

随机推荐

  1. 使用CefSharp在.NET中嵌入Google kernel

    原文:使用CefSharp在.NET中嵌入Google kernel 使用CefSharp可以在.NET轻松的嵌入Html,不用担心WPF与Winform 控件与它的兼容性问题,CefSharp大部分 ...

  2. OpenCV处理文件、视频和摄像头

    图像的本质(图像可以用数组来表示) import numpy as np import cv2 img = np.zeros((3, 3), dtype=np.uint8) print(img, im ...

  3. MySQL 主从同步架构中你不知道的“坑”

    以下操作征对指定不同步库 binlog-format=ROW模式 1 查看主从的binlog模式 mysql> show slave status\G ********************* ...

  4. CTP报单参数详解

    交易所代码 产品类型 业务类型 价格类型 指令类型 价格类型 OrderPriceType 有效期类型 TimeCondition 成交量类型 VolumeCondition 备注 CZCE 郑商所 ...

  5. css 超出部分显示省略号 汇总

    单行: 加宽度 overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 多行: display: -webkit-box; -we ...

  6. hadoop最简伪分布式安装

    本次安装运行过程使用的是Ubuntu16.04 64位+Hadoop2.5.2+jdk1.7.0_75 Notice: Hadoop2.5.2版本默认只支持64位系统 使用的jdk可以为1.7和1.8 ...

  7. Spring Boot嵌入式的Servlet容器

    一.查看SpringBoot默认的嵌入式Servlet容器(默认使用的是tomcat) 在IDEA的项目的pom文件中按Ctrl + shift + Alt + U可以打开SpringBoot依赖的图 ...

  8. hadoop的权限控制

    HDFS支持权限控制,但支持较弱.HDFS的设计是基于POSIX模型的,支持按用户.用户组.其他用户的读写执行控制权限.在linux命令行下,可以使用下面的命令修改文件的权限.文件所有者,文件所属组: ...

  9. mysql5.7.26做主从复制配置

    一.首先两台服务器安装好mysql数据库环境 参照linux rpm方式安装mysql5.1 https://www.cnblogs.com/sky-cheng/p/10564604.html 二.主 ...

  10. 由n个已按1,2,3,.....,n编号的人围成一圈,从编号为1的人开始按1,2,3顺序循环报数,凡报到3者出圈,最后留一个人,问其编号是多少

    /************************************************************************* > File Name: only_one. ...