设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP对象接口指什么,如何实现?

发布时间:2022-11-14 09:11 所属栏目:121 来源:互联网
导读:这篇文章主要介绍了PHP对象接口是什么,如何实现?相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP对象接口是什么,如何实现?文章都会有所收获,下面我们一起来看看吧。 使用接口(interface),可以指定某个类必须实现哪
  这篇文章主要介绍了“PHP对象接口是什么,如何实现?”相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP对象接口是什么,如何实现?文章都会有所收获,下面我们一起来看看吧。
 
  使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。
 
  接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
 
  接口中定义的所有方法都必须是公有,这是接口的特性。
 
  实现(implements)
 
  要实现一个接口,使用 implements 操作符。类中必须实现接口中定义的所有方法,否则会报一个致命错误。类可以实现多个接口,用逗号来分隔多个接口的名称。
 
  Note:
 
  实现多个接口时,接口中的方法不能有重名。
 
  Note:
 
  接口也可以继承,通过使用 extends 操作符。
 
  Note:
 
  类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误。
 
  常量
 
  接口中也可以定义常量。接口常量和类常量的使用完全相同,但是不能被子类或子接口所覆盖。
 
  范例
 
  Example #1 接口示例
 
  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;
 
      }
 
  }
 
  //下面的写法是错误的,会报错,因为没有实现getHtml()
 
  class BadTemplate implements ITemplate
 
  {
 
      private $vars = array();
 
      public function setVariable($name,$var)
 
      {
 
          $this->vars[$name] = $var;
 
      }
 
  }
 
  Example #2 可扩充的接口
 
  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){}
 
  }
 
  //错误写法
 
  class d implements b
 
  {
 
      public function foo(){}
 
      public function baz(Foo $foo){}
 
  }
 
  Example #3 继承多个接口
 
  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 使用接口常量
 
  interface a
 
  {
 
      const b = 1;
 
  }
 
  //输出接口常量
 
  echo a::b;
 
  //错误写法
 
  class b implements a
 
  {
 
      const b = 1;
 
  }
 
  接口加上类型约束,提供了一种很好的方式来确保某个对象包含有某些方法。参见 instanceof 操作符和类型约束。
 
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读