动态类函数接口/特征

时间:2015-04-26 11:39:04

标签: php oop

我试图获得动态特征的效果。

我想

class API {
    private $_source = "some text";
    public function __construct($apiSource){
        switch($apiSource){
            case "a":
                use APIa;
                break;
            case "b":
                use APIb;
                break;
            default:
                break;
        }
    }

    public function whatAPI(){
        return "none";
    }

    public function decode(){
        return explode(" ", $this->_source);
    }
}

trait APIa {
    public function whatAPI(){
        return "APIa";
    }

    public function decode(){
        return json_decode($this->_source);
    }

    public function onlyForA(){
        return "something";
    }
}

trait APIb {
    public function whatAPI(){
        return "APIb";
    }
}

使用API​​ :: source可以使用任何(APIa / APIb)。它会被称为:

$api = new API()
$api->whatAPI(); // "none"

$api = new API("a")
$api->onlyForA(); // "something"

不幸的是,use无法从函数中加载。

如果是API::decode()APIa应该覆盖它,APIb应该继承它。

我尝试在API中使用私有函数来保存apiClass,然后将其用作$this->apiClass->func(),但开发和维护过于烦人。< / p>

0 个答案:

没有答案