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. luogu P1852 [国家集训队]跳跳棋

    luogu 直接操作是不可能的,考虑发现一些性质.可以发现如果每次跳的棋子都是两边的,那么最多只有一种方案,那么就把这样操作得到的状态记为当前状态的父亲,从一个状态这样做一定会结束.那么如果两个状态只 ...

  2. CSA Lignts Out

    csa 算是热身题吧 如果是每次操作一行或一列,那么无论怎么操作,本质不同的行最多只有两种,本质不同的列也最多只有两种,那么只要把某一种行和某一种列全部翻转使得全为0即可 现在是同时操作一行一列,显然 ...

  3. luogu P4631 [APIO2018] Circle selection 选圆圈

    传送门 那个当前半径最大的圆可以用堆维护.这道题一个想法就是优化找和当前圆有交的圆的过程.考虑对于所有圆心建KD-tree,然后在树上遍历的找这样的点.只要某个点子树内的点构成的矩形区域到当前圆心的最 ...

  4. java中的集合类详情解析以及集合和数组的区别

    数组和链表 数组:所谓数组就是相同数据类型的元素按照一定顺序排列的集合. 它的存储区间是连续的,占用内存严重,所以空间复杂度很大,为o(n),但是数组的二分查找时间复杂度很小为o(1). 特点是大小固 ...

  5. Git生成公钥.pub 及秘钥 命令

    Git生成公钥.pub 及秘钥 命令 ssh-keygen -t rsa -C "******@qq.com" 将.pub公钥里面内容复制到github或者将这文件交给git管理员 ...

  6. 【总结】Android 应用测试总结

    前提 所有的功能分支已完成 启动: 1. 启动入口:桌面正常启动,最近运行启动,所有程序列表中启动,锁屏快捷启动2. 其他入口:从其他程序开启应用,从外部以文件形式打开应用(如果有)3. 退回:从其他 ...

  7. centos7 安装部署zabbix客户端

    1.下载安装zabbix-agent: # rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2. ...

  8. 独家!三代Ryzen国行价格来了:12核3999

    5月27日,AMD在2019台北电脑展COMPUTEX展前新闻发布会上举行主题演讲,AMD CEO苏姿丰登台,正式发布了第三代Ryzen锐龙处理器,新品共有3款,分别是Ryzen 7 3700X.Ry ...

  9. matlab 中figure的图像 抗锯齿

    linehandle = plot(xxxxxx); set( linehandle, 'linesmoothing', 'on' );

  10. cmd命令删除文件夹或文件

    删除空文件夹rd /s/q "D:\Program Files\afish" 删除里面的文件del /a/f/q "D:\Program Files\afish\123. ...