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. mysql文本后面带换行符导致查询不到

    UPDATE tablename SET  FIELD = REPLACE(REPLACE(FIELD, CHAR(10), ''), CHAR(13), ''); CHAR(10):  换行符 CH ...

  2. java使用Callable创建又返回值的线程

    并发编程使我们可以将程序分为很多个分离的,相互之间独立的任务,通过使用多线程的机制,将每个任务都会有一个执行线程来单独的驱动,一个线程是 进程中一个单一顺序控制流,一个进程可以拥有多个线程,也就相当于 ...

  3. 11.AutoMapper 之值转换器(Value Transformers)

    https://www.jianshu.com/p/b77311546e64 值转换器(Value Transformers) 值转换器应用于单一类型的转换.AutoMapper在分配值之前,会检测该 ...

  4. vuex的简单理解

    初次接触vuex,谈谈我自己的理解.有待后期改进 首先要知道,Vuex 是专门为 Vue.js 设计的状态管理库.我们知道在用vue.js进行前端项目开发时,会出现很多组件相互之间调用属性.状态,小项 ...

  5. 列举java语言中反射的常用方法

    package review;/*12:43 2019/7/21*/ import model.AnotherClass; import model.OneClassMore; import mode ...

  6. vue学习之vue-resource的引入

    npm安装的命令 npm install vue-resource --save 安装完成后在main.js中导入 import  VueResource  from 'vue-resource' V ...

  7. 关于 i++ 和 ++ i

    先看一下代码,猜想一下输出值 @Testpublic void test() { int i =1; int a,b=0; i++; a=(i++); System.out.println(a); S ...

  8. python日志汇总

    1. 文件头在Linux下推荐文件头: #! /usr/bin/env python # -*- coding: utf-8 -*- 2.import导入语句 import: 一般导入第三包可以直接使 ...

  9. info - 阅读 info 文档

    SYNOPSIS 总览 info [OPTION]... [MENU-ITEM...] DESCRIPTION 描述 阅读 info 格式的文档. OPTIONS 选项 --apropos=STRIN ...

  10. N皇后问题 回溯法 C/C++

    一:问题描述 N皇后问题(含八皇后问题的拓展,规则同四皇后):在N*N的棋盘上,放置N个皇后,要求每一横行每一列,每一对角线上均只能放置一个皇后,求解可能的方案及方案数. 二:代码及结果如下 #inc ...