php教程

超轻量级php框架startmvc

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

更新时间:2020-04-13 18:38:51 作者:startmvc
本文实例讲述了php多继承的几种常见实现方法。分享给大家供大家参考,具体如下:classPare

本文实例讲述了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("模特");

运行结果:

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

php 多继承