この記事の内容は、[php クラスとオブジェクト] のオブジェクトのコピーに関するものです。これは、必要な友達と共有します
使用状況:
1. GTK ウィンドウ オブジェクトがある場合、このオブジェクトはウィンドウ関連のリソースを保持します。元のウィンドウと同じプロパティをすべて保持したまま新しいウィンドウをコピーしたい場合がありますが、それは新しいオブジェクトである必要があります (新しいオブジェクトでない場合、一方のウィンドウでの変更がもう一方のウィンドウに影響するため)。
2. オブジェクト A がオブジェクト B への参照を保持しており、オブジェクト A をコピーすると、使用するオブジェクトがオブジェクト B ではなく B のコピーになる場合、オブジェクト A のコピーを取得する必要があります。実装:
clone キーワード (可能であればオブジェクトの __clone() メソッドを呼び出します) を介して、オブジェクトの __clone() メソッドを直接呼び出すことはできません。$copy_of_object = clone $object;
void __clone ( void )
Example #1 复制一个对象<?phpclass SubObject{ static $instances = 0; public $instance; public function __construct() { $this->instance = ++self::$instances; } public function __clone() { $this->instance = ++self::$instances; } }class MyCloneable{ public $object1; public $object2; function __clone() { // 强制复制一份this->object, 否则仍然指向同一个对象 $this->object1 = clone $this->object1; } }$obj = new MyCloneable();$obj->object1 = new SubObject();$obj->object2 = new SubObject();$obj2 = clone $obj;print("Original Object:\n"); print_r($obj);/* Original Object: MyCloneable Object ( [object1] => SubObject Object ( [instance] => 1 ) [object2] => SubObject Object ( [instance] => 2 ) ) */print("Cloned Object:\n"); print_r($obj2);/* Cloned Object: MyCloneable Object ( [object1] => SubObject Object ( [instance] => 3 ) [object2] => SubObject Object ( [instance] => 2 ) ) */?>
[php クラスとオブジェクト] マジック メソッド
以上が[phpのクラスとオブジェクト] オブジェクトのコピーの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。