PHPクローンキーワードの使い方

青灯夜游
リリース: 2023-03-11 19:28:02
オリジナル
1974 人が閲覧しました

PHP では、 clone キーワードを使用してオブジェクトのクローンを作成できます。構文形式は「クローン オブジェクト名 = クローンの元のオブジェクト名;」です。オブジェクトが正常にクローンされた後、そのメンバーのメソッド、属性、および値が返されます。全く同じです。クローンコピーのメンバー属性を再割り当てする場合は、「__clone()」メソッドを使用できます。

PHPクローンキーワードの使い方

このチュートリアルの動作環境: Windows7 システム、PHP7.1 バージョン、DELL G3 コンピューター

PHP クローンキーワード (オブジェクトのクローン)

PHP のオブジェクト モデルは参照によってオブジェクトを呼び出しますが、場合によってはオブジェクトのコピーを作成する必要があります。元のオブジェクトを変更するときに、オブジェクトを変更する必要はありません。オブジェクトのコピーに影響を与えます。 new キーワードを使用してオブジェクトを再作成し、同じ値をプロパティに割り当てると、面倒でエラーが発生しやすくなります。 PHP では、既存のオブジェクトに基づいて同一のオブジェクトを複製できます。複製後は、元のオブジェクトとコピー オブジェクトは完全に独立しており、相互に干渉しません。

PHP では、 clone キーワードを使用してオブジェクトのクローンを作成できます。構文形式は次のとおりです:

克隆对象名称 = clone 原对象名称;
ログイン後にコピー

クローン メソッドは実際にオブジェクトのメモリ領域全体をコピーし、新しいオブジェクト変数を使用するためです。新しいメモリを指すため、割り当てられたオブジェクトと元のオブジェクトは互いに独立しています。

オブジェクトが正常に複製されると、それらのメンバーのメソッド、プロパティ、および値はまったく同じになります。クローンコピーのメンバー属性を再割り当てする場合は、__clone() メソッドを使用できます。

【例】以下では、簡単な例を使用して、clone キーワードの使用方法を示します。

<?php
    class Website{
        public $name, $url;
        public function __construct($name, $url){
            $this -> name = $name;
            $this -> url  = $url;
        }
        public function output(){
            echo $this -> name.&#39;,&#39;.$this -> url.&#39;<br>&#39;;
        }
    }
    $obj  = new Website(&#39;PHP中文网&#39;, &#39;https://www.php.cn/&#39;);
    $obj2 = clone $obj;
    $obj  -> output();
    $obj2 -> output();
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    var_dump($obj);
    var_dump($obj2);
?>
ログイン後にコピー

実行結果は次のとおりです:

PHP中文网,https://www.php.cn/
PHP中文网,https://www.php.cn/
object(Website)#1 (2) {
  ["name"]=>
  string(16) "PHP中文网"
  ["url"]=>
  string(27) "https://www.php.cn/"
}
object(Website)#2 (2) {
  ["name"]=>
  string(16) "PHP中文网"
  ["url"]=>
  string(27) "https://www.php.cn/"
}
ログイン後にコピー

注: = を使用してオブジェクトを変数に代入すると、取得されるのはオブジェクトへの参照になります。この変数を通じて変更できます。プロパティの値は元のオブジェクトに影響します。

#clone() マジック メソッド

#__clone() メソッドは直接呼び出すことはできません。オブジェクトが clone キーワードによって複製される場合にのみ呼び出されます。このオブジェクトを使用して __clone() メソッドを呼び出すことができます。オブジェクトのコピーを作成するとき、PHP は __clone() メソッドが存在するかどうかを確認します。存在しない場合は、デフォルトの __clone() メソッドを呼び出し、オブジェクトのすべてのプロパティをコピーします。 __clone() メソッドが定義されている場合、__clone() メソッドは新しいオブジェクトのプロパティを設定します。したがって、__clone() メソッドでは、変更する必要があるプロパティをオーバーライドするだけで済みます。

__clone() メソッドにはパラメータは必要ありません。例を示します:

<?php
    class Website{
        public $name, $url;
        public function __construct($name, $url){
            $this -> name = $name;
            $this -> url  = $url;
        }
        public function output(){
            echo $this -> name.&#39;,&#39;.$this -> url.&#39;<br>&#39;;
        }
        public function __clone(){
            $this -> name = &#39;PHP教程&#39;;
            $this -> url  = &#39;https://www.php.cn/&#39;;
        }
    }
    $obj  = new Website(&#39;PHP中文网&#39;, &#39;https://www.php.cn/&#39;);
    $obj2 = clone $obj;
    $obj  -> output();
    $obj2 -> output();
?>
ログイン後にコピー

実行結果は次のとおりです:

PHP中文网,https://www.php.cn/
PHP教程,https://www.php.cn/
ログイン後にコピー

ヒント: クラス内でプライベート アクセス権を持つ空の __clone() メソッドを設定すると、クローン作成が無効になる可能性があります。

推奨学習: 「PHP ビデオ チュートリアル

以上がPHPクローンキーワードの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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