プロパティおよびメソッドへのアクセス


「6.3プロパティおよびメソッドへのアクセス」からのメモ。


PHPでのオブジェクトの代入は参照渡しになります。参照ではなくコピーしたい場合はclone構文を使います。

<?php
class Person
{
  public $age;

  function __clone()
  {
    echo "start clone...\n";
  }
}

$hoge = new Person;
$hoge->age = 10;

$foo = clone $hoge;
$foo->age = 20;

echo "\$hoge->age = {$hoge->age}\n";
echo "\$foo->age = {$foo->age}\n";
?>
start clone...
$hoge->age = 10
$foo->age = 20

__clone()メソッドを定義しておくと、クローンされるまえにその関数が呼び出されます。