当前位置:首页 > PHP教程 > php面向对象 > 列表

php如何使用_call实现多继承(代码示例)

发布:smiling 来源: PHP粉丝网  添加日期:2020-02-03 14:29:54 浏览: 评论:0 

本篇文章给大家带来的内容是关于php如何使用_call实现多继承(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

这篇文章简单介绍下使用_call实现代码的复用。

_call:php的一个魔术方法,当调用类中不存在的method时,会自动调用_call.

示例代码:

  1. class One{ 
  2.  
  3.     function method_1(){ 
  4.  
  5.         echo '11<br/>'
  6.  
  7.     } 
  8.  
  9.     function method_2(){ 
  10.  
  11.         echo '22<br/>'
  12.  
  13.     } 
  14.  
  15.  
  16.  
  17.  
  18. class Two{ 
  19.  
  20.     function method_3(){ 
  21.  
  22.         echo '33<br/>'
  23.  
  24.     } 
  25.  
  26.     function method_4(){ 
  27.  
  28.         echo '44<br/>'
  29.  
  30.     } 
  31.  
  32.  
  33. class StaticDemo{ 
  34.  
  35.  
  36.  
  37.     protected $Class = array(); 
  38.  
  39.  
  40.  
  41.     public function __construct(array $class = array()){ 
  42.  
  43.         $this->Class = $class
  44.  
  45.     } 
  46.  
  47.  
  48.  
  49.     public function __call($name$arguments
  50.  
  51.     { 
  52.  
  53.         // TODO: Implement __call() method. 
  54.  
  55.         foreach ($this->Class as $v){ 
  56.  
  57.             if (is_callable(array($v$name))) { 
  58.  
  59.                 //call_user_func_array在上篇文章中已作出理解 
  60.  
  61.                 return call_user_func_array(array($v$name), $arguments); 
  62.  
  63.             } 
  64.  
  65.         } 
  66.  
  67.         return call_user_func_array(array($this$name), $arguments); 
  68.  
  69.     } 
  70.  
  71.  
  72. //phpfensi.com 
  73.  
  74.  
  75.  
  76. $obj = new StaticDemo(array(new One(), new Two())); 
  77.  
  78. $obj->method_1(); 
  79.  
  80. $obj->method_3(); 

运行结果:11,33

Tags: _call php多继承

分享到: