weixin

PHP的映射

日期: January 13, 2019 分类: Web开发 作者:网站维护人员

映射,就是就是观察或者说检查类。比如new一个映射类的对象,传入对象A作为参数。就可以给 A 做一次检查了,比如看看 A 有什么方法,有什么属性。

<?php
/**
 * Created by PhpStorm.
 * User: Ac
 * Date: 2019/1/13
 * Time: 22:17
 */
class ClassOne {
    function callClassOne()
    {
        print "In Class One\n";
    }
}

class ClassTwo {
    function callClassTwo(){
        print "In Class Two\n";
    }
}

class ClassOneDelegator {
    private $target;

    function __construct() {
        $this->target[] = new ClassOne();
    }

    function addObject($obj) {
        $this->target[] = $obj;
        var_dump($this);
    }

    function __call($name, $args){
        foreach ($this->target as $obj){
            $r = new ReflectionClass($obj);

            try {
                $method = $r->getMethod($name);
                if ($method->isPublic() && !$method->isAbstract()){
                    return $method->invoke($obj, $args);
                }
            } catch (Exception $e) {

            }
        }
    }
}

$obj = new ClassOneDelegator();
$obj->addObject(new ClassTwo());
$obj->callClassOne();
$obj->callClassTwo();
qq