1 つのクラスで機能を数回再利用したいと考えています。この機能は、プライベート変数に依存しています。
trait Address {
private $address;
public function getAddress() {
return $this->address;
}
public function setAddress($address) {
$this->address = $address;
}
}
特性を 2 回使用することがわかった唯一の方法は次のとおりです。
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
プライベート変数を共有せずに、実際に特性を 2 回使用する解決策はありますか?