好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php 多态与接口学习实现与实例代码

php5中,变量的类型是不确定的,一个变量可以指向任何类型的数值、字符串、对象、资源等,我们无法说php5中多态的是变量.

我们只能说在php5中,多态应用在方法参数的类型提示位置.

一个类的任何子类对象都可以满足以当前类型作为类型提示的类型要求,所有实现这个接口的类,都可以满足以接口类型作为类型提示的方法参数要求,简单的说,一个类拥有其父类、和已实现接口的身份.

通过实现接口实现多态:下面的例子中,useradmin类的静态方法,要求一个user类型的参数.

在后面的使用中,传递了一个实现了user接口的类normaluser的实例,代码成功运行.

<?php  interface  user{  // user接口     public   function   getname();    public   function  setname( $_name );  }  class  normaluser  implements  user {  // 实现接口的类.     private   $name ;    public   function  getname(){     return   $this ->name;   }    public   function  setname( $_name ){     $this ->name =  $_name ;   } //开源代码phpfensi.com   }  class  useradmin{  //操作.     public   static   function   changeusername(user  $_user , $_username ){     $_user ->setname( $_username );   }  }  $normaluser  =  new  normaluser();  useradmin::changeusername( $normaluser , "tom" ); //这里传入的是 normaluser的实例.   echo   $normaluser ->getname();  ?> 

php 接口类:interface

其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如,代码如下:

interface  shop   {   public   function  buy( $gid );   public   function  sell( $gid );   public   function  view( $gid );   } 

我声明一个shop接口类,定义了三个方法:买(buy),卖(sell),看(view),那么继承此类的所有子类都必须实现这3个方法少一个都不行,如果子类没有实现这些话,就无法运行,实际上接口类说白了,就是一个类的模板,一个类的规定,如果你属于这类,你就必须遵循我的规定,少一个都不行,但是具体你怎么去做,我不管,那是你的事,代码如下:

class  baseshop  implements  shop   {   public   function  buy( $gid )   {   echo ( '你购买了id为 :' . $gid . '的商品' );   }   public   function  sell( $gid )   {   echo ( '你卖了id为 :' . $gid . '的商品' );   }   public   function  view( $gid )   {   echo ( '你查看了id为 :' . $gid . '的商品' );   }   } 

下面缩一下方法,代码如下:

<?php    interface  myusbkou    {         function  type(); //类型          function  action(); //执行的操作     }    class  zip  implements  myusbkou    {   //继承接口          function  type()      {             echo   "usb的2.0接口" ;        }         function  action()      {             echo   "--->需要usb 2.0驱动" ;        }    }    class  mp3  implements  myusbkou  {         function  type()        {          echo   "mp3的1.0接口" ;        }         function  action()        {          echo   "--->需要mp3 1.0驱动<br/>" ;        }    }    class  mypc  {         function  usbthing( $thing )        {             $thing ->type();             $thing ->action();        }    }    $p = new  mypc();    $mp3 = new  mp3();    $zip = new  zip();    $p ->usbthing( $mp3 );    $p ->usbthing( $zip );    ?>   

查看更多关于php 多态与接口学习实现与实例代码的详细内容...

  阅读:45次