参考リンク:
1. php.net 公式 Web サイトのドキュメント - オブジェクトのコピー
いつ使用しますか? php.net からの抜粋:
ほとんどの場合、オブジェクトのプロパティを取得するためにオブジェクトを完全にコピーする必要はありません。ただし、これが本当に必要となるケースが 1 つあります。それは、ウィンドウ関連のリソースを保持する GTK ウィンドウ オブジェクトがある場合です。元のウィンドウと同じプロパティをすべて保持したまま新しいウィンドウをコピーしたい場合がありますが、それは新しいオブジェクトである必要があります (新しいオブジェクトでない場合、一方のウィンドウでの変更がもう一方のウィンドウに影響するため)。別の状況もあります。オブジェクト A がオブジェクト B への参照を保存している場合、オブジェクト A をコピーするときに、そこで使用されるオブジェクトをオブジェクト B ではなく B のコピーにしたい場合は、オブジェクト A のコピーを取得する必要があります。 。
最も単純な「=」を使用してみてください
最初に明確にしておきたいのは、PHP オブジェクトは識別子とともに保存されるため、オブジェクトへの直接の「代入」動作は「参照による受け渡し」と同等です
出力結果は次のとおりです:
オブジェクト識別子としての #n は、$a1 と $a2 が実際には同じオブジェクトを指しており、$a3 は別のオブジェクトであることを示していることがわかります
そのため、まったく新しいオブジェクトをコピーする必要がある場合、= を使用して直接コピーすることはできません。それ以外の場合、$a1->a を変更することは、$a2->a を変更することと同じです。
浅いコピー
PHP5 では、クラスにマジック メソッド __clone() があり、clone キーワードとオブジェクトとともに使用すると自動的に呼び出されます (明示的に定義されていない場合は、空のメソッドが呼び出されます)。
clone キーワードの機能は、オブジェクトをコピーしてオブジェクトの「浅いコピー」を形成し、それを新しいオブジェクトに割り当てることです。このときのオブジェクト識別子は異なります。
出力結果は次のとおりです:
ご覧のとおり、$a1 と $a2 は明らかに 2 つの異なるオブジェクトです (オブジェクト識別子が異なります)。ただし、注意すべき点は、「b」が指すオブジェクト識別子が両方とも #2 であることです。これは、2 つのオブジェクトが同じであることを証明しています。これが「浅いコピー」の「欠陥」ですが、これら 2 つのオブジェクトには必要な場合があります。同様に、PHP のクローンもデフォルトで「浅いコピー」になります。
なぜ浅いコピーと呼ばれるのでしょうか?
コピーする際はすべての属性が「値渡し」であり、上記の b 属性にはオブジェクト識別子が格納されるため、「参照渡し」と同等になります。これは完全なコピーではないため、「浅いコピー」と呼ばれます。 。
ディープコピー
上で述べたように、 clone キーワードを使用すると、古いオブジェクトの __clone() メソッドが自動的に呼び出されます (その後、コピーされたオブジェクトが返されます)。そのため、対応するクラスの __clone() メソッドを書き換えるだけで済みます。返されるオブジェクトの「参照渡し」プロパティが別の新しいオブジェクトを指すようにします。以下は例です (実際には __clone() を書き直すためにさらに多くの手順が必要となる「浅いコピー」の例と比較できます):
結果は異なります。b 属性のオブジェクト識別子に注意してください:

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SublimeText3 中国語版
中国語版、とても使いやすい

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
