Как сохранить в переменную объект с другим свойством не изменяя объект? Здравствуйте, есть код:class test { public $var = 'variable'; public function setVar($param) { $this->var = $param; } } $Obj = new test(); $str = $Obj->setVar('new variable'); Я что-то туплю, как в переменную $str сохранить объект с измененным свойством не затронув оригинал? Конечно, можно сделать так:$Obj = new test(); $Obj2= clone $Obj; $str = $Obj2->setVar('new variable'); Но, так нельзя)) Что-то в самом методе сделать? Пробовал статическим метод сделать, но... На конструктор и модификаторы доступа не обращайте внимание.
Вы можете изменить метод setVar следующим образом, чтобы он возвращал новый объект с измененным свойством, не затрагивая оригинал:
class test { public $var = 'variable'; public function setVar($param) { $newObj = clone $this; $newObj->var = $param; return $newObj; } } $Obj = new test(); $newObj = $Obj->setVar('new variable'); $str = $newObj->var;
Теперь метод setVar возвращает новый объект с измененным свойством, который можно сохранить в переменную $newObj, не затрагивая оригинальный объект $Obj.
Вы можете изменить метод setVar следующим образом, чтобы он возвращал новый объект с измененным свойством, не затрагивая оригинал:
class test {public $var = 'variable';
public function setVar($param) {
$newObj = clone $this;
$newObj->var = $param;
return $newObj;
}
}
$Obj = new test();
$newObj = $Obj->setVar('new variable');
$str = $newObj->var;
Теперь метод setVar возвращает новый объект с измененным свойством, который можно сохранить в переменную $newObj, не затрагивая оригинальный объект $Obj.