想象一下,我有两个特征,data
和events
。特征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");
}
}
第二种情况是需要使用config
和data
的其他名为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
的内容。