ホームページ  >  記事  >  バックエンド開発  >  phpの「クローン羊」

phpの「クローン羊」

autoload
autoloadオリジナル
2021-03-15 15:30:132018ブラウズ

定義: クローン オブジェクト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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。