19:PHP对象接口

对象接口

使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。

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

 

实现(implements)

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

 

Note:

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

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

类要实现接口,必须使用和接口中所定义的方法完全一致的方式。否则会导致致命错误。

 

常量

接口中也可以定义常量。接口常量和类常量的使用完全相同,但是不能被子类或子接口所覆盖。

  1. <?php
  2.  // 声明一个'iTemplate'接口
  3.  interface  iTemplate
  4.  {
  5.     public function  setVariable ( $name ,  $var );
  6.     public function  getHtml ( $template );
  7. }
  8. // 实现接口
  9. // 下面的写法是正确的
  10.  class  Template  implements  iTemplate
  11.  {
  12.     private  $vars  = array();
  13.     public function  setVariable ( $name ,  $var )
  14.     {
  15.          $this -> vars [ $name ] =  $var ;
  16.     }
  17.     public function  getHtml ( $template )
  18.     {
  19.         foreach$this -> vars  as  $name  =>  $value ) {
  20.              $template  =  str_replace ( '{'  .  $name  .  '}' ,  $value ,  $template );
  21.         }
  22.         return  $template ;
  23.     }
  24. }
  25. // 下面的写法是错误的,会报错,因为没有实现 getHtml():
  26. // Fatal error: Class BadTemplate contains 1 abstract methods
  27. // and must therefore be declared abstract (iTemplate::getHtml)
  28.  class  BadTemplate  implements  iTemplate
  29.  {
  30.     private  $vars  = array();
  31.     public function  setVariable ( $name ,  $var )
  32.     {
  33.          $this -> vars [ $name ] =  $var ;
  34.     }
  35. }

 

1、可扩充的接口

  1. <?php
  2.  interface  a
  3.  {
  4.     public function  foo ();
  5. }
  6. interface  b  extends  a
  7.  {
  8.     public function  baz ( Baz $baz );
  9. }
  10. // 正确写法
  11.  class  c  implements  b
  12.  {
  13.     public function  foo ()
  14.     {
  15.     }
  16.     public function  baz ( Baz $baz )
  17.     {
  18.     }
  19. }
  20. // 错误写法会导致一个致命错误
  21.  class  d  implements  b
  22.  {
  23.     public function  foo ()
  24.     {
  25.     }
  26.     public function  baz ( Foo $foo )
  27.     {
  28.     }
  29. }

 

2、继承多个接口

  1. <?php
  2.  interface  a
  3.  {
  4.     const  b  =  'Interface constant' ;
  5. }
  6. // 输出接口常量
  7.  echo  a :: b ;
  8. // 错误写法,因为常量不能被覆盖。接口常量的概念和类常量是一样的。
  9.  class  b  implements  a
  10.  {
  11.     const  b  =  'Class constant' ;
  12. }

php对象接口

PHP接口的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢?这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方法是继承的子类必须实现的;如果子类没有实现接口类任何一种方法,就无法运行。

 

简单来讲:PHP接口类就是一个类的模板,一个类的规定,如果你属于这类,你就必须遵循我的规定,少一个都不行,但是具体你怎么去做,我不管,那是你的事!

    A+
发布日期:2017年01月01日 22:59:36  所属分类:PHP教程
最后更新时间:2017-01-01 22:59:36
付杰
  • ¥ 89.0元
  • 市场价:129.0元
  • ¥ 39.0元
  • 市场价:39.0元
  • ¥ 1999.0元
  • 市场价:2999.0元
  • ¥ 298.0元
  • 市场价:598.0元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: