347 of 410 menu

メソッド __clone

メソッド __clone は、演算子 clone を使用したときに自動的に呼び出されます。 これにより、オブジェクトの独自のコピー処理を定義できます。デフォルトでは、PHPは オブジェクトの全てのプロパティの浅いコピーを実行します。メソッド __cloneは、 深いコピーを実装したり、クローン作成時の動作を変更する必要がある場合に便利です。

構文

public function __clone(): void

基本的なオブジェクトのクローン作成を実装します:

<?php class User { public $name; public function __construct($name) { $this->name = $name; } public function __clone() { echo 'オブジェクトがクローンされました'; } } $user1 = new User('John'); $user2 = clone $user1; ?>

コード実行結果:

'オブジェクトがクローンされました'

ネストしたオブジェクトを持つオブジェクトの深いコピーを実装します:

<?php class Address { public $city; public function __construct($city) { $this->city = $city; } } class User { public $name; public $address; public function __construct($name, $city) { $this->name = $name; $this->address = new Address($city); } public function __clone() { $this->address = clone $this->address; } } $user1 = new User('John', 'New York'); $user2 = clone $user1; $user2->address->city = 'Boston'; echo $user1->address->city; ?>

コード実行結果:

'New York'

クローン作成時に一意の識別子を追加します:

<?php class Product { public $id; public $name; public function __construct($name) { $this->id = uniqid(); $this->name = $name; } public function __clone() { $this->id = uniqid(); } } $product1 = new Product('Laptop'); $product2 = clone $product1; echo $product1->id . ' ' . $product2->id; ?>

コード実行結果(例):

'5f1a2b3c 5f1a2b3d'

関連項目

  • メソッド __construct,
    これはオブジェクトのコンストラクタです
日本語
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItalianoქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
当サイトでは、サイトの動作、分析、パーソナライゼーションのためにクッキーを使用しています。 データ処理はプライバシーポリシーに従って行われます。
すべて受け入れる 設定 拒否