PHP特征冲突

时间:2014-04-09 06:00:19

标签: php traits

想象一下,我有两个特征,dataevents。特征data公开公共方法data()并使用events特征。特征events只公开方法trigger()。基本上就是:

trait events {
    public function trigger($value) { echo "Event: {$value}\n"; }
}

trait data {
    use events;

    public function data($key, $value) {
        $this->trigger("changed {$key}");
    }
}

现在我需要两件事(案例):在我的班级data上使用特质user,但没有直接允许访问特征events

class user {
    use data;

    public function set_name($name) {
        $this->data("name", "John Doe");
    }
}

第二种情况是需要使用configdata的其他名为events的类。像:

class config {
    use data, events;

    public function set_config($key, $value) {
        $this->data($key, $value);
        $this->trigger("reconfig");
    }
}

问题在于:

  

致命错误:尚未应用特征方法event,因为set_config上存在与其他特征方法的冲突......

我的问题是:如果我需要,我可以“私下”包含特征吗?类似private use events特征data的内容。

0 个答案:

没有答案