Como tornar uma variável privada em uma característica?
Eu gostaria de reutilizar uma funcionalidade várias vezes em uma única classe. Essa funcionalidade depende de uma variável particular:
trait Address {
private $address;
public function getAddress() {
return $this->address;
}
public function setAddress($address) {
$this->address = $address;
}
}
A única maneira que encontrei parause o traço duas vezesé o seguinte:
class User {
use Address {
getAddress as getHomeAddress;
setAddress as setHomeAddress;
getAddress as getWorkAddress;
setAddress as setWorkAddress;
}
}
O problema é, ao fazer isso, a variável privada$address
é compartilhado entre os diferentes métodos e o código não funcionará como esperado:
$user = new User();
$user->setHomeAddress('21 Jump Street');
echo $user->getWorkAddress(); // 21 Jump Street
Existe uma solução para realmente usar o traço duas vezes, sem compartilhar suas variáveis privadas?