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

这篇文章主要介绍了php 多继承的几种常见实现方法,结合实例形式分析了两种PHP实现多继承的操作方法,需要的朋友可以参考下。

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

  1. class Parent1 {
  2. function method1() {}
  3. function method2() {}
  4. }
  5. class Parent2 {
  6. function method3() {}
  7. function method4() {}
  8. }
  9. class Child {
  10. protected $_parents = array();
  11. public function Child(array $parents=array()) {
  12. $this->_parents = $parents;
  13. }
  14. public function __call($method, $args) {
  15. // 从“父类"中查找方法
  16. foreach ($this->_parents as $p) {
  17. if (is_callable(array($p, $method))) {
  18. return call_user_func_array(array($p, $method), $args);
  19. }
  20. }
  21. // 恢复默认的行为,会引发一个方法不存在的致命错误
  22. return call_user_func_array(array($this, $method), $args);
  23. }
  24. }
  25. $obj = new Child(array(new Parent1(), new Parent2()));
  26. print_r( array($obj) );die;
  27. $obj->method1();
  28. $obj->method3();

运行结果:

  1. Array
  2. (
  3. [0] => Child Object
  4. (
  5. [_parents:protected] => Array
  6. (
  7. [0] => Parent1 Object
  8. (
  9. )
  10. [1] => Parent2 Object
  11. (
  12. )
  13. )
  14. )
  15. )
  16. interface testA{
  17. function echostr();
  18. }
  19. interface testB extends testA{
  20. function dancing($name);
  21. }
  22. class testC implements testB{
  23. function echostr(){
  24. echo "接口继承,要实现所有相关抽象方法!";
  25. echo "<br>";
  26. }
  27. function dancing($name){
  28. echo $name."正在跳舞!";
  29. }
  30. }
  31. $demo=new testC();
  32. $demo->echostr();
  33. $demo->dancing("模特");

运行结果:

接口继承,要实现所有相关抽象方法!

模特正在跳舞!