Blogger Information
Blog 70
fans 4
comment 5
visits 103796
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP:oop->抽象类/接口/后期静态绑定/单例模式连接数据库 Db类中数据库增删改查方法
JiaJieChen
Original
1065 people have browsed it

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

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

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

Correcting teacher:灭绝师太灭绝师太

Correction status:qualified

Teacher's comments:因为数据表里没有东西所以是空数组,哈哈~
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply withNews Comment Service Agreement
0 comments
Author's latest blog post
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!