php多继承问题

多继承

php 本身是不支持多继承的

因为多继承容易引起菱形问题

php可以通过其他方式实现多继承

  • __call

    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();
    
  • 多接口

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("模特"); 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值