加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

浅谈php接口操作interface关键字的用法及应用实例

发布时间:2023-05-23 12:46:05 所属栏目:PHP教程 来源:
导读:interface是面向对象编程语言中接口操作的关键字,功能是把所需成员组合起来,以封装一定功能的集合,本文我们来讲讲interface基本知识及用法实例.接口是一种约束形式,其中只包括成员定义,不包含成员实现的内容,用接口(

interface是面向对象编程语言中接口操作的关键字,功能是把所需成员组合起来,以封装一定功能的集合,本文我们来讲讲interface基本知识及用法实例.

接口是一种约束形式,其中只包括成员定义,不包含成员实现的内容,用接口(interface),你可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容,我们可以通过interface来定义一个接口,就像定义一个标准的类一样,但其中定义所有的方法都是空的.

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

实现:要实现一个接口,可以使用implements操作符,类中必须实现接口中定义的所有方法,否则会报一个fatal错误,如果要实现多个接口,可以用逗号来分隔多个接口的名称.

Note:实现多个接口时,接口中的方法不能有重名.

Note:接口也可以继承,通过使用extends操作符.

常量:接口中也可以定义常量,接口常量和类常量的使用完全相同,它们都是定值,不能被子类或子接口修改.

Example #1 接口代码示例:

<?php 

// 声明一个'iTemplate'接口 

interface iTemplate 

   public function setVariable($name, $var); 

   public function getHtml($template); 

// 实现接口 

// 下面的写法是正确的 

class Template implements iTemplate 

   private $vars = array(); 

   public function setVariable($name, $var) 

   { 

       $this->vars[$name] = $var; 

   } 

   public function getHtml($template) 

   { 

       foreach($this->vars as $name => $value) { 

           $template = str_replace('{' . $name . '}', $value, $template); 

       } 

       return $template; 

   } 

// 下面的写法是错误的,会报错: 

// Fatal error: Class BadTemplate contains 1 abstract methods 

// and must therefore be declared abstract (iTemplate::getHtml) 

class BadTemplate implements iTemplate 

{  //开源软件:Cuoxin.com 

   private $vars = array(); 

   public function setVariable($name, $var) 

   { 

       $this->vars[$name] = $var; 

   } 

?> 

Example #2 Extendable Interfaces

<?php 

interface a 

   public function foo(); 

interface b extends a 

   public function baz(Baz $baz); 

// 正确写法 

class c implements b 

   public function foo() 

   { 

   } 

   public function baz(Baz $baz) 

   { 

   } 

// 错误写法会导致一个fatal error 

class d implements b 

   public function foo() 

   { 

   } 

 

   public function baz(Foo $foo) 

   { 

   } 

?> 

Example #3 多个接口间的继承

<?php 

interface a 

   public function foo(); 

interface b 

   public function bar(); 

interface c extends a, b 

   public function baz(); 

class d implements c 

   public function foo() 

   { 

   } 

   public function bar() 

   { 

   } 

   public function baz() 

   { 

   } 

?> 

Example #4 使用接口常量

<?php 

interface a 

   const b = 'Interface constant'; 

// 输出接口常量 

echo a::b; 

// 错误写法,因为常量的值不能被修改。接口常量的概念和类常量是一样的。 

class b implements a 

   const b = 'Class constant'; 

?>

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!