当前位置:首页 > PHP > 正文内容

php抽象类和接口作用

高老师9年前 (2017-07-25)PHP2083

【一】.抽象类

假设如下场景:

团队准备开发某网站,表建好了,页面设计好了.A组负责开发底层数据库操作类(DB),B组负责调用DB类.

但是此时A组发生了争执,MySQL? Oracle? DB2? sqlite?到底使用什么数据库?B组.... 进入漫长的等待.

解决方法:

A组和B组 先定1个数据库类的模板,模板中对方法名,参数,返回值,都做严格的规定,此时不管A组选用什么数据库,对于B组来说,没有任何影响。

例如:AB定义一个总的数据库操作类模板

abstract class DB {

 abstract public function getRow($sql);

 abstract public function getAll($sql);

 abstract public function getOne($sql);

 abstract public function upDate($sql);

 abstract public function Exec($sql);

}

class MySQLdb extends Db {

//重写

}

class SqlLitedb extends Db {

//重写

}

项目中使用其他数据库没有关系,只需要继承DB类,例如mysql操作类继承DB类,sqllite操作类继承DB类.然后对具体的方法进行重写。

在多人开发中,我不需要知道SqlLitedb类或者MySQLdb类内部如何实现,因为他们都是按照严格的DB类来实现,我只需要知道DB类的方法名称,参数,返回值就能随便操作任意数据库,而不需要关心如何实现。

【二】.接口

接口是对功能的抽象,功能各拆成小块,因为它支持多实现,能自由组合成新的物种.

通过对抽象类和接口的了解,我们可以将抽象类理解为类的模板,接口则是方法的模板,接口的粒度更小,用于描述通用的方法

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/36.html

分享给朋友:

“ php抽象类和接口作用” 的相关文章

php trait的使用

php trait的使用

PHP不像net支持多继承,自身只支持单继承,为了解决这个问题,php出了Trait这个特性,减少单继承语言的限制。并且能让代码复用率更高。说白了就是一个对象的属性和方法扩展工具一样。例如:trait exts {     public f...

cookie跨域,cookie p3p跨域

cookie跨域,cookie p3p跨域

最近在公司开发一个新的项目假设项目域名是a.com,需要接入b.com的单点登陆系统。(1).首先我们会在a.com的登陆页面用iframe引入b.com来显示登陆界面,实际上登陆验证操作都是在b.com上面(2).当b.com验证通过,会在前端ajax请求a.com的回调地址,这个回调地址目的就是...

php  while  true  cpu占用100%

php while true cpu占用100%

在编写多进程的实例中我在每个进程中使用如下代码://调用等待信号的处理器 while (true) {     pcntl_signal_dispatch(); }开启5个进程,cpu直接100%修正之后的代码://调用等待信号的处理器 while&...

PHP最快方式模拟curl,PHP最快爬虫模拟方法

PHP最快方式模拟curl,PHP最快爬虫模拟方法

有时候我们需要爬一个接口,但是这个接口需要很多参数,包括header和cookie要去编写,使用php curl模拟实在太慢。我们可以通过浏览器的network来复制请求为curl命令。例如我需要模拟请求接口地址:https://www.xkmz.cc/Ajax/Debug/delly,我们只需要在...

php迭代器返回值,php yield getReturn

php迭代器返回值,php yield getReturn

php生成器的方法getReturn获取生成器迭代完成后的返回值,当生成器迭代完成会将生成器的返回值返回,因此如果迭代器未进行迭代是获取不到值的,如果你没有return值则返回null,参考代码:<?php function G1() {    &nbs...

thinkphp3定时任务,tp定时任务,thinkphp定时任务

thinkphp3定时任务,tp定时任务,thinkphp定时任务

本教程使用的定时任务基于EasyTak,EasyTask官方文档:https://gitee.com/392223903/EasyTask由于tp3.2.x官方开发未考虑命令行支持和绝对路径开发的标准,因此我编写了一个支持的类来运行。1.在tp3.2.3根目录下安装easytaskcomposer&...