modern php笔记---2.1、特性(命名空间、特性、性状)
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、特性(命名空间、特性、性状)的更多相关文章
- 《PHP7底层设计与源码实现》学习笔记1——PHP7的新特性和源码结构
<PHP7底层设计与源码实现>一书的作者陈雷亲自给我们授课,大佬现身!但也因此深感自己基础薄弱,遂买了此书.希望看完这本书后,能让我对PHP7底层的认识更上一层楼.好了,言归正传,本书共1 ...
- <NET CLR via c# 第4版>笔记 第18章 定制特性
18.1 使用定制特性 FCL 中的几个常用定制特性. DllImport 特性应用于方法,告诉 CLR 该方法的实现位于指定 DLL 的非托管代码中. Serializable 特性应用于类型,告诉 ...
- modern php笔记---php (性状)
modern php笔记---php (性状) 一.总结 一句话总结: trait是和继承一个层次的东西 一个类use MyTrait;后,trait中的方法覆盖父类方法,当前类中的方法覆盖trait ...
- [C#]Attribute特性(3)——AttributeUsage特性和特性标识符
相关文章 [C#]Attribute特性 [C#]Attribute特性(2)——方法的特性及特性参数 AttributeUsage特性 除了可以定制自己的特性来注释常用的C#类型外,您可以用At ...
- [C#]Attribute特性(2)——方法的特性及特性参数
上篇博文[C#]Attribute特性介绍了特性的定义,类的特性,字段的特性,这篇博文将介绍方法的特性及特性参数相关概念. 3.方法的特性 之所以将这部分单列出来进行讨论,是因为对方法的特性查询的反射 ...
- swift 声明特性 类型特性
原文地址:http://www.cocoachina.com/newbie/basic/2014/0612/8801.html 特性提供了关于声明和类型的很多其它信息.在Swift中有两类特性,用于修 ...
- modern php笔记---1、新时代的php
modern php笔记---1.新时代的php 一.总结 一句话总结: php有Zend Engine 和 Facebook开发的 HipHop Virtual Machine两套引擎 1.php也 ...
- opencv2.4.13+python2.7学习笔记--opencv中的Gui特性--图片:读图像,显示图像,保存图像
阅读对象:可以配置opencv+Python环境的任何人,毕竟写这篇文章的人就是小白. 1.环境说明 1.1opencv版本: 1.2Python版本: 1.3系统:win7 注: (1)opencv ...
- TypeScript学习笔记 (一)基础特性
一. 字符串新特性 1. 多行字符串 var str = ``; 2. 字符串模板 var world = "world"; var str = `hello ${world}`; ...
随机推荐
- 使用CefSharp在.NET中嵌入Google kernel
原文:使用CefSharp在.NET中嵌入Google kernel 使用CefSharp可以在.NET轻松的嵌入Html,不用担心WPF与Winform 控件与它的兼容性问题,CefSharp大部分 ...
- OpenCV处理文件、视频和摄像头
图像的本质(图像可以用数组来表示) import numpy as np import cv2 img = np.zeros((3, 3), dtype=np.uint8) print(img, im ...
- MySQL 主从同步架构中你不知道的“坑”
以下操作征对指定不同步库 binlog-format=ROW模式 1 查看主从的binlog模式 mysql> show slave status\G ********************* ...
- CTP报单参数详解
交易所代码 产品类型 业务类型 价格类型 指令类型 价格类型 OrderPriceType 有效期类型 TimeCondition 成交量类型 VolumeCondition 备注 CZCE 郑商所 ...
- css 超出部分显示省略号 汇总
单行: 加宽度 overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 多行: display: -webkit-box; -we ...
- hadoop最简伪分布式安装
本次安装运行过程使用的是Ubuntu16.04 64位+Hadoop2.5.2+jdk1.7.0_75 Notice: Hadoop2.5.2版本默认只支持64位系统 使用的jdk可以为1.7和1.8 ...
- Spring Boot嵌入式的Servlet容器
一.查看SpringBoot默认的嵌入式Servlet容器(默认使用的是tomcat) 在IDEA的项目的pom文件中按Ctrl + shift + Alt + U可以打开SpringBoot依赖的图 ...
- hadoop的权限控制
HDFS支持权限控制,但支持较弱.HDFS的设计是基于POSIX模型的,支持按用户.用户组.其他用户的读写执行控制权限.在linux命令行下,可以使用下面的命令修改文件的权限.文件所有者,文件所属组: ...
- mysql5.7.26做主从复制配置
一.首先两台服务器安装好mysql数据库环境 参照linux rpm方式安装mysql5.1 https://www.cnblogs.com/sky-cheng/p/10564604.html 二.主 ...
- 由n个已按1,2,3,.....,n编号的人围成一圈,从编号为1的人开始按1,2,3顺序循环报数,凡报到3者出圈,最后留一个人,问其编号是多少
/************************************************************************* > File Name: only_one. ...