¿Cómo hacer una variable privada a un rasgo?
Me gustaría reutilizar una funcionalidad varias veces en una sola clase. Esta funcionalidad se basa en una variable privada:
trait Address {
private $address;
public function getAddress() {
return $this->address;
}
public function setAddress($address) {
$this->address = $address;
}
}
La única manera que he encontrado parausa el rasgo dos veces, es el siguiente:
class User {
use Address {
getAddress as getHomeAddress;
setAddress as setHomeAddress;
getAddress as getWorkAddress;
setAddress as setWorkAddress;
}
}
El problema es, al hacer esto, la variable privada.$address
se comparte entre los diferentes métodos, y el código no funcionará como se esperaba:
$user = new User();
$user->setHomeAddress('21 Jump Street');
echo $user->getWorkAddress(); // 21 Jump Street
¿Existe una solución para usar realmente el rasgo dos veces, sin compartir sus variables privadas?