php 多继承的几种常见实现方法示例
这篇文章主要介绍了php 多继承的几种常见实现方法,结合实例形式分析了两种PHP实现多继承的操作方法,需要的朋友可以参考下。
本文实例讲述了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("模特");
运行结果:
接口继承,要实现所有相关抽象方法!
模特正在跳舞!