首页 > 编程语言 >【web 开发】快来给你的类定个标准 -PHP 的接口技术

【web 开发】快来给你的类定个标准 -PHP 的接口技术

时间:2023-06-10 10:37:26浏览次数:51  
标签:web 接口技术 类定 接口 方法 关键字 使用 抽象类 声明

前言

因为php和Java一样,只支持单继承,即是每个类只能继承自一个父类。这就跟现实生活非常贴切,从生理学上来说,一个人只有一个父亲。当声明的心类继承抽象类实现模板以后,他就不能再有其他父类了。为了解决这个问题,php引入了接口的概念。接口是一种特殊的抽象类,这个在上一篇文章也介绍过。而抽象类又是一种特殊的类,所以接口也是一种特殊的类。这样关联起来,更有利于对抽象类和接口的理解。如果抽象类中的所有方法都是抽象方法,那么我们就可以换另一种声明方式--使用接口技术.

接口的声明及使用

接口中声明的方法必须都是抽象方法,另外不能在接口中声明变量,只能使用const关键字声明为常量的成员属性,而且接口中的所有成员都必须有public的访问权限。类的声明时使用class关键字标识的,而接口的声明则是使用interface关键字来修饰。声明接口的语法格式如下:

interface 接口名称{//interface是修饰关键字
	//常量成员属性
	//抽象方法--接口所有的方法必须是抽象方法,不能有非抽象方法
}

接口中所有的方法都要求是抽象方法,所以就不需要在方法名前面使用abstract关键字修饰了,而且在接口中也不需要显式的使用public访问权限进行修饰,因为默认权限就是public的,也只能使public的。另外接口和抽象类一样也不能实例化对象,它是一种更加严格的规范,也需要通过子类来实现。但可以直接使用接口名称在接口外面去获取常量成员的值,下面通过一个例子来介绍接口的声明:

声明一个名称为One的接口

<?php
interface One{
	const CHANGLIANG = '常量';  //声明常量成员属性
	function func1();
	function func2();
}

还可以使用extends关键字让一个接口去继承另外一个接口,实现接口之间的扩展,因为代码需要降低耦合度,但很多时候又需要多个标准组合,也就是需要同时满足多个标准,所以接口可以分为更小的粒度进行声明,在下面的例子中声明了一个Two接口继承了前面例子的One接口,具体代码如下:

<?php
interface Two extends One{ //继承接口One
	
	function func3();
	function func4();
}

如果需要使用接口中的成员,则需要通过子类去实现接口中的全部抽象方法,然后创建子类的对象去调用在子类中实现后的方法。但通过类去继承接口时需要使用implements关键字来实现,而不是使用extends关键字来完成。如果需要使用抽象类去实现接口中的部分方法,也同样需要使用implements关键字实现。在下面的例子中声明一个抽象类Myclass去实现One接口中的部分方法,但是要想实例化对象,这个抽象类还要有子类把它所有的抽象方法都实现才行。声明一个Myclass2类去实现One接口中的全部方法。具体代码如下:

<?php
interface One{
	const CHANGLIANG = '常量';  //声明常量成员属性
	function func1();
	function func2();
}

abstract class Myclass implements One{
	function func1(){ //只实现了抽象方法func1
		//todo
		
	}
}

class Myclass2 implements One{
	//实现接口中的所有抽象方法
	function func1(){ 
		//todo
		
	}
	
	function func2(){ 
		//todo
		
	}
}

php是单继承的,一个类只能有一个父类,但是一个类可以实现多个接口.将要实现的 多个接口之间使用逗号分隔开来,而且子类中需要将所有接口中的抽象方法全部实现才可以创建对象.相当于一个类要遵守多个规范,就像我们不仅要遵守国家法律,如果在学校,作为学生还要遵守学校的规章制度.实现多个接口的格式的代码如下:

<?php
class  ClassName implements 接口1,接口2,接口3,....,接口n{
    //todo需要实现所有接口中的所有抽象方法
}

实现多个接口使用implements关键字,同时还可以使用extends关键字继承一个类,即在继承一个类的同时实现多个接口。但一定要先使用extends继承一个类,再使用implements关键字实现多个接口,代码语法格式如下:

<?php
//继承一个类以及实现多个接口
class  ClassName extends SuperClassName(父类) implements 接口1,接口2,接口3,....,接口n{
    //todo需要实现所有接口中的所有抽象方法
}

除了上述的一些应用,还有很多地方可以使用接口,比如:对于一些已经开发好的系统,在结构上进行较大的调整已经不太现实,这时可以通过定义一些接口并追加相应的实现来完成功能结构的扩展。

标签:web,接口技术,类定,接口,方法,关键字,使用,抽象类,声明
From: https://blog.51cto.com/micai01/6454074

相关文章

  • JavaWeb准备工作和环境配置
    JavaWeb基本概念web开发:web:网页的意思静态web:提供的数据资源不会发生改变动态web:数据是不断变化的,现代网站几乎都是动态网站技术栈:Servlet/JSP:基于java,主推B/S架构,可以​承载高并发,语法类似ASP​ ASP:微软,国内早期流行。在html中嵌入VB脚本,c#​......
  • Web安全-渗透测试-基础知识06
    加密编码算法在渗透测试中,常见的密码等敏感信息会采用加密处理,其中作为安全测试人员必须要了解常见的加密方式,才能为后续的安全测试做好准备加密算法的种类加密算法分为可逆、不可逆加密算法,而不可逆加密算法又分为对称加密和非对称加密不可逆加密:不可逆加密算法最大的特......
  • 【web 开发】生活中大家都喜欢搞模板来规范化操作,抽象类却玩不明白-PHP的抽象类
    前言生活中大家都喜欢定标准搞模板来规范化一系列流程,抽象类和接口却玩不明白,抽象类和接口相似,都是一种比较特殊的类,抽象类是一种特殊的类,而接口也是一种特殊的抽象类。他们通常配合面向对象的多态性一起使用。虽然声明和使用都比较容易,但他们的作用在理解上会稍微困难一点,接下来......
  • WebRTC回声消除示例(Android版)
    AndroidApp下载地址:https://gitcode.net/techinged/share/-/raw/master/android/echo_cancel/webrtc_echo_cancel(Android).zip或者https://kdocs.cn/l/ctpgZy0zRHbM1、将AndroidApp文件echo_cancel.apk安装到你的Android手机,Android版本要求在Android4.0(API14)或以上。安......
  • SpringMVC WebUploader 分片上传
    ​ 需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500G内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以500G来进行限制。PC端全平台支持,要求支持Windows,Mac,Linux支持所有浏览器。支持文件批量上传支持文件夹上传,且要求在服务端保留层......
  • jsp WebUploader 分片上传
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。首先我们需要了解的是上传文件三要素:1.表单提交方式:post(get方式提交有大小限制,post没有)2.表单的enctype属性:必须设置为multipart/form-data.3.表单必须......
  • C++ 类定义
     定义一个类需要使用关键字 class,然后指定类的名称,并类的主体是包含在一对花括号中,主体包含类的成员变量和成员函数。定义一个类,本质上是定义一个数据类型的蓝图,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。https://www.lekaowang.com/cjjjs/zsu/fob/......
  • Web API入门详解指南
    学习目标:掌握API和WebAPI的概念掌握常见浏览器提供的API的调用方式能通过WebAPI开发常见的页面交互功能能够利用搜索引擎解决问题typora-copy-images-to:mediaWebAPIWebAPI介绍API的概念API(ApplicationProgrammingInterface,应用程序编程接口)是一些预先定义的函数,目的是提......
  • c# WebUploader 分片上传
    ​IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传......
  • Qt+QtWebApp开发笔记(五):http服务器html中使用json触发ajax与后台交互实现数据更新传递
    前言  前面完成了页面的跳转、登录,很多时候不刷新页面就想刷新局部数据,此时ajax就是此种技术,且是异步的。  本篇实现网页内部使用js调用ajax实现异步交互数据。  在js中使用ajax是通过XMLHttpRequest来实现的。下载地址  链接:https://pan.baidu.com/s/1tJMTPhIIyVE40......