博主信息
JiaJieChen
博文
66
粉丝
3
评论
5
访问量
46810
积分:0
P豆:134

PHP:oop->抽象类/接口/后期静态绑定/单例模式连接数据库 Db类中数据库增删改查方法

2021年05月09日 22:09:18阅读数:410博客 / JiaJieChen/ PHP

PHP:oop->抽象类/接口/后期静态绑定/单例模式连接数据库 Db类中数据库增删改查方法

一.抽象类

接口里面的方法都是没有实现的,而类里面的方法都是有实现的. 有没有一种形态,允许类里面一部分方法不实现呢?

  • 当接口中的某些方法对于所有的实现类都是一样的实现方法,只有部分方法需要用到多态的特性

  • 如人和动物吃东西是不同的,但是呼吸是相同的,不需要为人和动物分别实现呼吸的功能

  • abstract关键字用于定义抽象类

  • 在抽象方法前面添加abstract关键字可以标明这个方法是抽象方法不需要具体实现{}

  • 抽象类中可以包含普通的方法,有方法的具体实现

  • 继承抽象类的关键字是extends

  • 继承抽象类的子类需要实现抽象类中定义的抽象方法

  • 抽象类不能被实例化,当子类继承抽象类的时候,所有的抽象的方法都必须定义

①定义抽象类和实现抽象类成员属性和成员方法

定义子类 继承 抽象类,如果子类没有全部实现抽象类的方法,那子类也要在前面使用abstract 定义抽象子类
抽象类可以被多个子类继承,实现抽象类里面的方法,方法一样但是方法实现起来的内容可以不同

二.接口

接口就是把不同类的共同行为进行定义,然后在不同的类里面实22现不同的功能

  • interface定义接口,implements用于表示类实现某个接口

  • 接口里面的方法没有具体的实现,无{}

  • 实现了某个接口的类必须提供接口中定义的方法的具体实现

  • 不能实例化接口,但是能够判断某个对象是否实现了某个接口。instanceof关键字判断某个对象是否实现了某个接口 $object instanceof interface

  • 接口可以继承接口(interface extends interface

  • 接口中定义的所有方法都必须是公有,这是接口的特性

多态

因为接口的方法实现可以有很多,所以对于接口里面定义的方法的具体实现是多种多样的,这种特性我们称为多态

不需要知道对象属于哪个类,只要判断该对象的类是否实现接口,就能实现调用,相同代码实现不同结果

形象点说就是同一个接口,不同的对象实现,得出的结果不一样就是多态,如传入的是人类对象,得到的是人类吃苹果,传入的是猴子对象,得到的就是猴子吃香蕉。相同的一行代码,对于传入不同的接口的实现的对象的时候,表现是不同的。


>

三.后期静态绑定

①在传统的继承关系中, $this可以动态地与当前的调用对象进行绑定* 在传统的继承关系中, $this可以动态地与当前的调用对象进行绑定

证明this 可以动态化地与调用对象进行绑定

②获取类的实例 self 始终永远和当前类进行绑定

  1. self 始终永远和当前类进行绑定

  2. self 在静态继承上下文中, 不能动态的识别或者设置静态成员的调用者(单例继承)

    证明self不能动态化的与调用对象进行绑定

③后期静态绑定static可以解决self不能与动态的与调用对象进行绑定

后期静态绑定static可以动态化对调用者进行绑定

四.单例模式连接数据库 Db类中数据库增删改查方法

  • PHP语言是一种解释型的脚本语言,这种运行机制使得每个PHP页面被解释执行后,所有的相关资源都会被回收。也就是说,PHP在语言级别上没有办法让某个对象常驻内存,这和asp.net、Java等编译型是不同的,比如在Java中单例会一直存在于整个应用程序的生命周期里,变量是跨页面级的,真正可以做到这个实例在应用程序生命周期中的唯一性。然而在PHP中,所有的变量无论是全局变量还是类的静态成员,都是页面级的,每次页面被执行时,都会重新建立新的对象,都会在页面执行完毕后被清空,这样似乎PHP单例模式就没有什么意义了

  • PHP单例模式只是针对单次页面级请求时,出现多个应用场景并需要共享同一对象资源时是非常有意义的。

  • 面向对象编程三大特性:

  • 封装 可见性  php中使用3种类型的可见性 : private(私有), protected(保护),public(公共)

  • 封装一个程序元素, 把它设为private,仅在本类中可见,还可以把它设为protected,允许本类及其子类访问该属性; 要访问封装的对象, 必须提供公有的可见性. 想要作为一个真正有用的类, 必须至少提供一些方法是可见的(即使只是构造函数)

  • 继承 inheritance

  • 一个类扩展另一个类,前者会拥有后者的所有属性和方法.

  • php oop具有单继承的特点 -> 带来程序的高耦合性:如果程序通过深层次继承绑定到具体类,即使对父类做简单的修改,也会对子类带来严重的破坏 -> 解决办法: 1. 为了保证类之间的松绑定,通常会继承抽象类,而且是浅继承,即只有一层子类. 2. 引入trait结构

  • 多态 polymorphism  多态只有在oop上下文中讨论才有意义,多态真正价值在于,可以调用有相同接口的对象完成不同的工作.   基于一个公共接口, 在一个给定的程序结构中做出修改或增补时, 可以放心递请求或使用接口方法而不必担心程序会崩溃  一个名字多个实现

  • 接口通常允许开发人员创建松绑定的对象和类,php接口允许储存常量,实现接口的类都可以使用接口中储存的常量

连接数据库并且查找数据表

因为数据表里没有东西所以是空数组

批改老师:灭绝师太灭绝师太

批改状态:合格

老师批语:因为数据表里没有东西所以是空数组,哈哈~

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论