我刚刚发现特性中的私有属性不是特性的私有属性,而是使用特性的类的私有属性。
这意味着,如果有两个特性定义相同的私有属性,则会收到一条警告消息:
trait DataOne {
private $_data;
}
trait DataTwo {
private $_data;
}
class SomeClass {
use DataOne;
use DataTwo;
}
PHP向您提供以下警告消息:
DataOne and DataTwo define the same property ($_data) in the
composition of SomeClass. This might be incompatible, to improve
maintainability consider using accessor methods in traits
instead. Class was composed in SomeClass.
我有一个有几个特点的图书馆,把每一个私有财产都重新命名为不同的并不现实。我可以使用什么机制来定义一个属性或变量,该属性或变量对一个特性内的所有方法都可见,但对使用该特性的类都不可见?