本文实例讲述了php 多继承的几种常见实现方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
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
(
))
)
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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程序设计有所帮助。
原文链接:https://blog.csdn.net/ztblog/article/details/80171393