zoukankan      html  css  js  c++  java
  • PHP通过_call实现多继承

    原文地址:http://small.aiweimeng.top/index.php/archives/53.html

    上一篇讲到php可以通过接口是实现代码的复用。

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

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

    示例代码:

    class One{
    
        function method_1(){
            echo '11<br/>';
        }
    
        function method_2(){
            echo '22<br/>';
        }
    
    }
    
    class Two{
    
        function method_3(){
            echo '33<br/>';
        }
    
    
        function method_4(){
            echo '44<br/>';
        }
    
    }
    
    class StaticDemo{
    
        protected $Class = array();
    
        public function __construct(array $class = array()){
            $this->Class = $class;
        }
    
    
        public function __call($name, $arguments)
        {
            // TODO: Implement __call() method.
            foreach ($this->Class as $v){
                if (is_callable(array($v, $name))) {
                    //call_user_func_array在上篇文章中已作出理解
                    return call_user_func_array(array($v, $name), $arguments);
                }
            }
            return call_user_func_array(array($this, $name), $arguments);
        }
    
    }
    
    $obj = new StaticDemo(array(new One(), new Two()));
    $obj->method_1();
    $obj->method_3();
    

      

    运行结果:11,33

  • 相关阅读:
    设计模式--单例模式Singleton
    CSS选择器
    操作数据表
    HTML
    Shell学习
    LINUX常用命令
    多线程-互斥变量
    多线程-临界区
    每天一个linux命令:file(11)
    JavaScript设计模式小抄集(持续更新)
  • 原文地址:https://www.cnblogs.com/smallKilts/p/10536384.html
Copyright © 2011-2022 走看看