PHPで純粋な関数を実装したい
オブジェクトを参照ではなく値で渡すにはどうすればよいですか?
つまり、これは予想される出力です。
function change($obj) {
$obj->set_value(2);
}
$obj = new Object();
$obj->set_value(1);
change($obj);
echo $obj->get_value(); // 1
PHPで純粋な関数を実装したい
オブジェクトを参照ではなく値で渡すにはどうすればよいですか?
つまり、これは予想される出力です。
function change($obj) {
$obj->set_value(2);
}
$obj = new Object();
$obj->set_value(1);
change($obj);
echo $obj->get_value(); // 1
ここで読む:
http://php.net/manual/en/language.oop5.cloning.php
ディープコピー別名が必要になるため、実際には値渡ししないでください。深いクローン、またはパラメーターに割り当てられた非常識な量..
本当にやりたいのであれば、答えは次のとおりです。最初にディープコピーを作成し、次にコピーへの参照を渡します。