ホームページ >バックエンド開発 >PHPチュートリアル >phpの「クローン羊」
定義: クローン オブジェクトclone
、つまり、既存のオブジェクトから新しい同一のオブジェクトをコピーしますが、この 2 つは同じオブジェクトではありません。
1. オブジェクトのクローン作成は、clone キーワードによって実行されます。つまり、clone
Object
;
<?php class Saler{ //属性 public $count; private $money; } //实例化 $s1 = new Saler(); $s1->count = 1; //克隆 $s2 = clone $s1; ?>
2. クローンされたオブジェクトと元のオブジェクトには 2 つのメモリ アドレスがあるため、これらは 2 つの異なるオブジェクトです。
<?php //接上述代码 $s2->count = 2; echo $s1->count; //1,没有变化 ?>
3. オブジェクトはインスタンス化されるときにインスタンス化されます。既存のコンストラクター メソッド __construct()
を自動的に呼び出します。同様に、PHP ではクラス内で __clone()
メソッドを定義できます。オブジェクトのクローンが作成されると、新しくクローンされたオブジェクトが自動的に
<?php class Saler{ //属性 public $count; private $money; //克隆方法 public function __clone(){ var_dump($this); //编号为2,代表是克隆出来的对象 $this->count++; } } //实例化 $s1 = new Saler(); $s1->count = 1; //克隆 $s2 = clone $s1; ?>
4. オブジェクトのクローン作成が許可されていない場合は、__clone()
メソッドをプライベート化できます (本質的に、オブジェクトは許可されていません)外部に複製する必要があります) )
<?php class Saler{ //属性 public $count; private $money; //私有化克隆方法 private function __clone(){} } //实例化 $s1 = new Saler(); $s1->count = 1; //克隆 $s2 = clone $s1; //致命错误:不允许对象在外部访问一个私有方法 ?>
推奨: php ビデオ チュートリアル
以上がphpの「クローン羊」の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。