PHP オブジェクトのクローン作成 clone キーワードと __clone() メソッド
clone キーワードは同一オブジェクトのクローンを作成するために使用され、__clone() メソッドは元のプロパティとメソッドをオーバーライドするために使用されます。
オブジェクトの複製
プロジェクト内で 2 つ以上の同一のオブジェクトを使用する必要がある場合があります。new キーワードを使用してオブジェクトを再作成し、同じ属性を割り当てると、次のようになります。作業がさらに面倒になり、エラーが発生しやすくなります。 PHP にはオブジェクト クローン作成機能があり、オブジェクトに基づいて同一のオブジェクトを完全にクローンすることができます。また、クローン作成後、2 つのオブジェクトは互いに干渉しません。
オブジェクトのクローンを作成するには、キーワード clone を使用します。構文:
$object2 = clone $object;
<?php class Person { private $name; private $age; function __construct($name, $age) { $this->name=$name; $this->age=$age; } function say() { echo "我的名字叫:".$this->name."<br />"; echo "我的年龄是:".$this->age; } } $p1 = new Person("张三", 20); $p2 = clone $p1; $p2->say(); ?>
我的名字叫:张三 我的年龄是:20
<?php class Person { private $name; private $age; function __construct($name, $age) { $this->name = $name; $this->age = $age; } function say() { echo "我的名字叫:".$this->name; echo " 我的年龄是:".$this->age."<br />"; } function __clone() { $this->name = "我是假的".$this->name; $this->age = 30; } } $p1 = new Person("张三", 20); $p1->say(); $p2 = clone $p1; $p2->say(); ?>
我的名字叫:张三 我的年龄是:20 我的名字叫:我是假的张三 我的年龄是:30