欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php 多继承的几种常见实现方法示例

程序员文章站 2023-01-04 08:32:48
本文实例讲述了php 多继承的几种常见实现方法。分享给大家供大家参考,具体如下: class parent1 { function method1() {} fu...

本文实例讲述了php 多继承的几种常见实现方法。分享给大家供大家参考,具体如下:

class parent1 {
  function method1() {}
  function method2() {}
}
class parent2 {
  function method3() {}
  function method4() {}
}
class child {
  protected $_parents = array();
  public function child(array $parents=array()) {
    $this->_parents = $parents;
  }
  public function __call($method, $args) {
    // 从“父类"中查找方法
    foreach ($this->_parents as $p) {
      if (is_callable(array($p, $method))) {
        return call_user_func_array(array($p, $method), $args);
      }
    }
    // 恢复默认的行为,会引发一个方法不存在的致命错误
    return call_user_func_array(array($this, $method), $args);
  }
}
$obj = new child(array(new parent1(), new parent2()));
print_r( array($obj) );die;
$obj->method1();
$obj->method3();

运行结果:

array
(
    [0] => child object
        (
            [_parents:protected] => array
                (
                    [0] => parent1 object
                        (
                        )

                    [1] => parent2 object
                        (
                        )

                )

        )

)

interface testa{
  function echostr();
}
interface testb extends testa{
  function dancing($name);
}
class testc implements testb{
  function echostr(){
    echo "接口继承,要实现所有相关抽象方法!";
    echo "<br>";
  }
  function dancing($name){
    echo $name."正在跳舞!";
  }
}
$demo=new testc();
$demo->echostr();
$demo->dancing("模特");

运行结果:

接口继承,要实现所有相关抽象方法!
模特正在跳舞!