ホームページ > バックエンド開発 > PHPチュートリアル > PHPの__clone()メソッドの詳しい説明

PHPの__clone()メソッドの詳しい説明

藏色散人
リリース: 2023-04-07 06:48:02
オリジナル
5754 人が閲覧しました

__clone()、オブジェクトのコピーが完了すると呼び出されます

ほとんどの場合、プロパティを取得するためにオブジェクトを完全にコピーする必要はありません。ただし、これが本当に必要となるケースが 1 つあります。それは、ウィンドウ関連のリソースを保持する GTK ウィンドウ オブジェクトがある場合です。元のウィンドウと同じプロパティをすべて保持したまま新しいウィンドウをコピーしたい場合がありますが、それは新しいオブジェクトである必要があります (新しいオブジェクトでない場合、一方のウィンドウでの変更がもう一方のウィンドウに影響するため)。

別の状況もあります。オブジェクト A がオブジェクト B への参照を保存している場合、オブジェクト A をコピーするときに、そこで使用されるオブジェクトをオブジェクト B ではなく B のコピーにしたい場合は、次のようにする必要があります。オブジェクト A のコピーを取得します。

関数:

オブジェクトのコピーは、clone キーワードを使用して実行できます (これにより、可能であればオブジェクトの __clone() メソッドが呼び出されます)。オブジェクト内の __clone() メソッドを直接呼び出すことはできません。

構文:

$copy_of_object = clone $object;
ログイン後にコピー

注意:

オブジェクトがコピーされると、PHP 5 は浅いコピーを実行します。すべての参照プロパティは、引き続き元の変数への参照になります。

コピーが完了すると、__clone() メソッドが定義されている場合、新しく作成されたオブジェクト (コピーによって生成されたオブジェクト) の __clone() メソッドが呼び出され、属性 (必要な場合)。

コードを見てください:

<?php
class Person
{
    public $sex;
    public $name;
    public $age;
    public function __construct($name="",  $age=25, $sex=&#39;男&#39;)
    {
        $this->name = $name;
        $this->age  = $age;
        $this->sex  = $sex;
    }
    public function __clone()
    {
        echo __METHOD__."你正在克隆对象<br>";
    }
}
$person = new Person(&#39;小明&#39;); // 初始赋值
$person2 = clone $person;
var_dump(&#39;persion1:&#39;);
var_dump($person);
echo &#39;<br>&#39;;
var_dump(&#39;persion2:&#39;);
var_dump($person2);
ログイン後にコピー

結果を見てください:

Person::__clone你正在克隆对象
string(9) "persion1:" object(Person)#1 (3) { ["sex"]=> string(3) "男" ["name"]=> string(6) "小明" ["age"]=> int(25) } 
string(9) "persion2:" object(Person)#2 (3) { ["sex"]=> string(3) "男" ["name"]=> string(6) "小明" ["age"]=> int(25) }
ログイン後にコピー

クローン作成は成功しました。

以上がPHPの__clone()メソッドの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート