Я хотел бы повторно использовать функциональность несколько раз в одном классе. Эта функция зависит от частной переменной:
trait Address {
private $address;
public function getAddress() {
return $this->address;
}
public function setAddress($address) {
$this->address = $address;
}
}
Единственный способ, которым я нашел использовать признак дважды, выглядит следующим образом:
class User {
use Address {
getAddress as getHomeAddress;
setAddress as setHomeAddress;
getAddress as getWorkAddress;
setAddress as setWorkAddress;
}
}
Проблема заключается в том, что при этом частная переменная $address
делится между различными методами, и код не будет работать должным образом:
$user = new User();
$user->setHomeAddress('21 Jump Street');
echo $user->getWorkAddress(); // 21 Jump Street
Есть ли решение действительно использовать признак дважды, не разделяя его частные переменные?