PHPのポインタについて質問があります。
Aクラスで私は持っています:
protected $startDate;
public function getStartDate()
{
return $this->startDate;
}
public function setStartDate($startDate)
{
$this->startDate = $startDate;
}
私はこのように私のコードでそれを使用します:
$day = new \DateInterval('P1D');
$a->startDate->add($day);
結果:「保護されたプロパティにアクセスできません」(予想どおり)
私が試してみると:
$day = new \DateInterval('P1D');
print_r($a->getStartDate());
$date = $a->getStartDate();
$date->add($day);
print_r($a->getStartDate());
die();
結果 :
DateTime Object
(
[date] => 2012-11-08 00:00:00
[timezone_type] => 3
[timezone] => Europe/Paris
)
DateTime Object
(
[date] => 2012-11-09 00:00:00
[timezone_type] => 3
[timezone] => Europe/Paris
)
セッターなしで保護された値を変更しました
getterメソッドでポインタとして返されたので、日付の値を変更したと思います。セッターメソッドを使用せずに保護された値を変更する方法がわかりません。
なぜなのかご存知ですか?
ありがとう
編集:わかりました。説明したように、私のAクラスのメンバーはDateTimeオブジェクトです。本当に保護したい場合は、「タイムスタンプ」メンバーを作成して、タイムスタンプの新しいDateTimeを返す(またはメンバーのクローンを作成する)必要があります。
再度、感謝します !