• DAY22


      第12章 接口

    12.1 看一个实际的需求

     

    12.2 接口的基本介绍

    •  所谓接口:就是将一些抽象方法封装到一起,在某个类需要使用时,只需要实现该接口就可以, 说的实现接口就是指将该接口中的所有的抽象方法都实现了。
    •  基本语法

    interface 接口名称{

    常量;

       方法;

    }

    几点说明

    (1) interface 是关键字,不能够修改,规定好 。

    (2) 接口名称有命名规范是: iXxxxXxxx , 首先以小写的i开头. 后面使用大驼峰命名规则

    (3) 接口中的方法,都是抽象方法, 但是不需要使用abstract 去修饰

    (4) 接口中,不能有普通的成员属性,但是可以有常量.

    12.3 使用接口的好处

    12.4 快速入门案例

     

    12.5 接口的最佳实践案例

    •  使用接口的方式来模拟一下下面的运用场景

    • 走代码

     

     12.6 接口的应用场景

     

    总结: 当我们需要定义一些规范(方法)时,可以将这些方法封装到接口中 ,然后让其他的类来实现该接口即可.

    12.7 接口的细节讨论

    (1) 接口不能被实例化

    (2) 接口中所有的方法都不能有主体, 即接口中的方法都是抽象方法.

    (3) 一个类可以实现多个接口,逗号隔开

    举例说明:

    (4) 接口中可以有属性,但只能是常量 ,默认是public, 但不能用public 显式修饰

    (5) 一个接口不能继承其它的类,但是可以继承别的接口

     

    12.8 类定义的进一步完善

     

     12.9 继承类vs 实现接口

     

    • 总结一下

    (1) 实现接口可以看做是对php单继承机制的补充

    (2) 实现接口可以在不打破继承的层级关系的前提下,对类的功能进行扩展


         第13章 final关键字

    13.1 基本介绍

    当程序员不希望某个成员方法被子类重写时,我们可以将该方法修饰为final 方法.

    当程序员不希望某个类被继承,我们可以将该类修饰为final .

    final "最终"

     

    13.2 基本语法

    final 类名{

      final 访问修饰符 function 方法名(){

      //函数体

      }

    }

     

    13.3 快速入门案例

    总结

    (1) //如果我们不希望子类去重写attack方法, 使用final 修饰即可

    (2) //如果我们不希望子类来继承某个类, 则使用final修饰该类即可

     

    13.4 final 的使用细节讨论

    (1) final不能够修饰成员属性

    (2) final 方法不能被重写,但可以被继承

     

    (3) 一般来说,final 类中不会出现final 方法,因为final类都不能被继承,也就不会去重写override final类的方法了

    (4) final 类 是可以被实例化的

     


      

       第14章 类常量(const关键字)

    14.1 为什么需要使用当类常量

    在某些情况下,程序员可能有这样的需求:

    当不希望一个成员变量被修改,希望该变量的值是固定不变的。这时可以用const 去修饰该成员属性,这样这个属性就自动成为常量 , 比如所得税率, 数学中的圆周率等

    14.2 类常量的基本语法

    类常量是在类中定义的.

    class  类名{

      const 常量名 = 初始值;

    }

    说明

    (1) const 是关键字,规定好的而不能修改.

    (2) 常量名的规范是 XXX_YYY , 全部大写,然后使用下划线间隔

    (3) 类常量都是public , 但是我们不要使用public 去修饰.

     14.3 快速入门案例

     //计算公司所得税的案例.

    14.4 关于类常量的使用细节说明

    (1) 常量名一般字母全部大写 : TAX_RATE ,中间可以有下划线 TAX_RATE

    (2) 在定义常量的同时,必须赋初值, 比如 const TAX_RATE=1.1

    (3) const关键字前不能用public/protected/private修饰。默认是public

    (4) 如何访问常量

    在类的内部访问:   类名::常量名    self::常量名   接口::常量名

    在类的外部访问:  类名::常量名  接口名::常量名   

    (5)常量的值在定义的时候就初始化,以后就不能修改

    (6) 常量可以被子类继承

     

    (7) 一个常量是属于一个类的,而不是某个对象的

    (8) 关于常量可以是什么数据类的讨论

    结论: 常量可以是 基本数据类型(int, float , bool, string), 还是可以是 array ,但是不能是对象。

     

    (9) 类常量可以在类中,类的外部和其它普通函数中使用

     


        

         第15章  PHP面向对象编程的相关技术

     基本: php面向对象编程的各个知识点都过一下.

    15.1 对象克隆技术和分析

    15.2 对象遍历[了解,应付笔试]

    •  看看如何对对象进行遍历: 所谓对象的变量,指的是对某个对象的属性进行遍历.
    • 举例

    在类的外部对对象进行遍历, 这时我们只能遍历到对象的public 属性.

     

    15.3 php的内置标准类

       看一个具体的需要: 如果,我们希望把一些数据,以对象的属性的方式存储,同时我们又不想定义一个类,可以考虑使用 PHP内置标准类 stdClass [standard标准]

            php的内置标准类 stdClass , 这个是系统默认提供,不需要程序员去创建,而是直接使用就可以.

    案例说明:

    15.4 数据类型转对象和对象转数组的说明

     在我们的开发中,有时会看到有人将数组或者基本数据类转成对象,那么这个是怎么回事?

    • 举例说明

     

    15.5 对象序列化和反序列化

    •  基本介绍

    所谓对象序列化是指: 将一个对象转换成一个字符串,这个字符串包括 属性名,属性值,属性类型, 和该对象对应的类名。简单的说明就把一个对象的数据和数据类型转成字符串.

    •  看一个实际的需求

    我要求同学们讲一个对象保存到文件中.(freeze 冷冻)-对象序列化.

     

    •  反序列化

    所谓反序列化就是指,将一个序列化的字符串,重新恢复成对应的对象.

     

    说明

    (1) 如果我们希望正确的操作反序列化对象,则需要引入该对象的类定义

    •  对象序列化和反序列化的细节讨论

    (1) 序列化的作用在哪些地方

    • 对象序列化利于对象的保存和传输
    • 可以让多个文件共享对象,而且我们将序列化后的对象保存到文件中,还可以达到在不同的时间段操作该对象.

    (2) serialize() 函数会检查类中是否存在一个魔术方法 __sleep()如果存在,该方法会先被调用,然后才执行序列化操作。此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE 级别的错误

    代码说明:

    (3) 与之相反, unserialize() 会检查是否存在一个 __wakeup()方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。

    __wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。

    代码说明:

    15.6 类与对象的相关函数

     在面向对象编程中,有一系列的函数,可以来对类和对象以及成员方法进行操作。我们重点讲解5个,其它的函数就请同学们自己去看一下即可.

     

    代码举例说明:

    15.7 traits 的讲解(重点)

    •  看一个实际的需求

     

    • 代码实现

     

     

    •  traits技术的细节说明

     


     

       第16章  反射技术

    16.1 当我们echo $对象时,输出该对象的属性,成员方法等等信息

    •  举例说明:

    16.2 反射机制的基本介绍

     PHP 5 具有完整的反射 API,添加了对类、接口、函数、方法和扩展进行反向工程的能力。 此外,反射 API 提供了方法来取出函数、类和方法中的文档注释。

     

    16.3 反射机制的使用场景

    1. 写底层框架(比如tp框架有一个控制器调度原理)
    2. 扩展类的功能
    3. 管理大量的未知类

     16.4 看一个需求-一会我们一起搞定他

     

     16.5 我们看一个简单的案例-反向代理调用 

    •   使用反射机制代理带有某个对象的方法

     

    •  代码说明

     

    16.6 反射机制的综合小练习-tp的控制器调度原理

     走代码:

     

     

    16.7 反射练习

     

     

    16.8 小结:

     

  • 相关阅读:
    SQL Server ----- 备份数据库 生成(.bak)文件
    SQL Server ----- 生成sql 脚本
    SQLServer --------- 将sql脚本文件导入数据库
    sql 语言--- DML,DDL,DQL,DCL,TCL,CCL
    装系统 ---------- 了解 UEFI与Legacy、硬盘分区MBR和GPT
    web基础(请求转发与重定向、二者区别)
    request(获取请求信息、用户提交的数据)
    response(向客户端写入数据、对相应进行设置(状态码、响应头))
    HttpServlet类(servlet的实现方式、doGet方法与get提交、doPost方法与post提交)
    servlet(API、配置文件、生命周期)
  • 原文地址:https://www.cnblogs.com/qianjilou/p/6372117.html
Copyright © 2020-2023  润新知