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

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接口允许储存常量,实现接口的类都可以使用接口中储存的常量

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值