場合によっては、プロジェクト内で 2 つ以上の同一のオブジェクトを使用する必要がある場合、「new」キーワードを使用してオブジェクトを再作成し、同じ属性を割り当てると、より面倒でエラーが発生しやすくなります。これは、オブジェクトから同一のオブジェクトを完全に複製するために非常に必要であり、複製後、2 つのオブジェクトは互いに干渉しません。
PHP4 では、オブジェクトのクローンを作成するためにキーワード "clone" を使用します。
{
09 | //定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值 |
10 | function __construct( $name = "" , $sex = "" , $age = "" ) { |
18 |
echo "我的名子叫:" . $this
" 性别:" . $this " 我的年龄是:" . $this 04
"<br>" ;
|
22 |
$p1 = new Person( "张三" "男" , 20);
|
24 |
//使用“clone”克隆新对象p2,和p1对象具有相同的属性和方法。 |
25 |
$p2 =clone $p1 ; //人のメンバー属性は以下の通りです |
🎜🎜🎜🎜🎜🎜🎜🎜05 🎜🎜🎜🎜 🎜🎜var🎜🎜$name 🎜🎜; 🎜🎜//その人の名前🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜06🎜🎜🎜 🎜 🎜🎜var🎜🎜$age🎜🎜 🎜🎜//人 年齢🎜🎜🎜🎜🎜🎜; 🎜 🎜🎜🎜🎜🎜08🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜09🎜🎜 🎜🎜 🎜🎜// コンストラクターパラメータを属性名として定義します、性別$sex、年齢$ageは割り当てられました 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜10🎜🎜🎜🎜 🎜🎜function🎜🎜__construct(🎜🎜$name🎜🎜= 🎜🎜"" 🎜🎜、🎜🎜$セックス🎜🎜=🎜🎜"" 🎜🎜、🎜🎜$年齢🎜🎜= 🎜🎜""🎜🎜) {🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜11 ;name=🎜🎜$name🎜🎜;🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜12🎜🎜🎜🎜🎜🎜$sex🎜🎜;🎜🎜🎜🎜🎜13🎜🎜🎜🎜14🎜🎜🎜🎜 🎜🎜} 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜15🎜🎜🎜 🎜 🎜🎜//この人は自分の属性を表現する方法で話すことができます🎜🎜 🎜🎜 🎜🎜🎜🎜🎜🎜🎜🎜17 🎜🎜🎜🎜function🎜🎜say(){🎜🎜🎜🎜🎜🎜🎜🎜🎜18🎜🎜🎜🎜息子は「🎜🎜。🎜🎜$this🎜🎜->」と電話しました。名前 。
🎜🎜" 性別: "🎜🎜$this🎜🎜->性別 .
🎜🎜「私の年齢は、🎜🎜$this🎜🎜->年齢です。」
🎜🎜"<br>"🎜🎜;🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜19🎜🎜🎜🎜 🎜🎜}🎜🎜🎜 🎜 🎜🎜🎜🎜🎜🎜🎜🎜20🎜🎜🎜🎜}🎜 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜21🎜🎜🎜 $p1🎜🎜= 🎜🎜new🎜🎜人(🎜🎜"张三"🎜 🎜,
🎜🎜「男性」🎜🎜、20);🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜23🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜24🎜🎜🎜🎜//「クローン」を使用してクローンを作成します新しいオブジェクト p2 には、p1 オブジェクトと同じプロパティとメソッドがあります。 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜25🎜🎜🎜🎜$p2🎜🎜=クローン🎜🎜$p1🎜🎜;🎜🎜🎜🎜🎜
26 | $p2 ->say();<p></p>
<table><tbody><tr>
<td><code>27 |
?> |
PHP4定义了一个特殊的方法名“__clone()”方法,是在对象克隆时自动调用的方法,用“__clone()”方法将建立一个与原对象拥有相同属 性和方法的对象,如果想在克隆后改变原对象的内容,需要在__clone()中重写原本的属性和方法, “__clone()”方法可以没有参数,它自 动包含$this和$that两个指针,$this指向复本,而$that指向原本;
09 | //定义一个构造方法参数为属性姓名$name、性别$sex和年龄$age进行赋值 |
10 | function __construct( $name = "" , $sex = "" , $age = "" ) { |
18 |
echo "我的名子叫:" . $this 26
" 性别:" . $this $p2 " 我的年龄是:" . $this ->say();
"<br>" ;
|
21 |
//对象克隆时自动调用的方法, 如果想在克隆后改变原对象的内容,需要在__clone()中重写原本的属性和方法
|
🎜🎜🎜27🎜 🎜🎜🎜?>🎜🎜🎜🎜🎜🎜🎜 🎜🎜PHP4 では、オブジェクトが複製されるときに自動的に呼び出される特別なメソッド名「__clone()」メソッドが定義されています。「__clone()」メソッドを使用すると、元のオブジェクトと同じ属性とメソッドを持つオブジェクトが作成されます。クローン作成後に元のオブジェクトの内容を変更するには、__clone() の元の属性とメソッドを書き直す必要があります。「__clone()」メソッドには、$this と $that という 2 つのポインターが自動的に含まれます。 、$this は コピー を指し、$that は
オリジナル を指します。 🎜🎜🎜🎜🎜🎜🎜 🎜02🎜🎜🎜🎜クラス🎜🎜人🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜03🎜🎜 🎜🎜{🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜04🎜🎜 🎜🎜 🎜🎜//以下 人のメンバー属性です🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜05🎜🎜🎜🎜 🎜🎜var🎜🎜$name🎜 🎜; 🎜🎜//その人の名前🎜 🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜06🎜🎜🎜🎜 🎜🎜var🎜🎜$sex🎜🎜 🎜07🎜🎜🎜🎜 🎜 🎜var🎜🎜$age🎜🎜 🎜🎜//の年齢人🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜08🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜09🎜🎜🎜 🎜 🎜🎜//コンストラクターのパラメーターを属性名 $name として定義します、性別 $sex と年齢 $age には値が割り当てられます🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜10🎜🎜🎜🎜 🎜🎜function🎜🎜__construct(🎜🎜$name🎜= 🎜🎜「」🎜🎜 、🎜🎜$性別🎜🎜= 🎜🎜""🎜🎜、🎜🎜$年齢🎜🎜= 🎜🎜""🎜🎜) {🎜🎜🎜🎜🎜🎜🎜🎜 🎜 🎜🎜🎜11🎜🎜🎜🎜 🎜🎜 $this🎜🎜->name=🎜🎜$name🎜🎜;🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜12🎜🎜🎜🎜 🎜🎜$this 🎜🎜->セックス=🎜 🎜$セックス🎜🎜 ;🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜13🎜🎜🎜🎜 🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜14🎜🎜🎜🎜🎜🎜}🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜15🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜16🎜🎜🎜🎜 🎜🎜//この人の話し方、自分の属性を言いなさい🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜17🎜🎜🎜🎜 🎜🎜関数🎜🎜say() {🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜18🎜🎜🎜🎜 🎜🎜「私の名前は:」🎜🎜$this🎜。 🎜->名前 .
🎜🎜" 性別: "🎜🎜$this🎜🎜->性別 .
🎜🎜「私の年齢は、🎜🎜$this🎜🎜->年齢です。」
🎜🎜"<br>"🎜🎜;🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜19🎜🎜🎜🎜 🎜🎜}🎜🎜🎜 🎜 🎜🎜🎜🎜🎜🎜🎜🎜20🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜🎜21🎜🎜🎜🎜 🎜🎜//オブジェクトの複製時に自動的に呼び出されるメソッド。複製後に元のオブジェクトの内容を変更したい場合は、元の属性とメソッドを書き直す必要があります。 __clone() 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜22🎜🎜🎜🎜 🎜🎜function🎜🎜__clone() {🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜23🎜🎜🎜🎜🎜🎜🎜
24 | //$this指的复本p2, 而$that是指向原本p1,这样就在本方法里,改变了复本的属性。 |
25 | $this 24
"我是假的 $that->name"<code>;
31 |
$p1 = new Person( "张三" "男" , 20);
|
32 |
$p2 //$this はコピー p2 を参照し、$that は元の p1 を参照するため、このメソッドではコピーの属性が変更されます。
$p1 ;
|
25
$this->name =
🎜🎜「私は偽の$that->名前です」🎜🎜;🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜26🎜🎜🎜🎜🎜->年齢 = 30;🎜🎜 🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜27🎜🎜🎜🎜🎜🎜}🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜28🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜29🎜🎜🎜🎜} 🎜🎜🎜🎜🎜🎜30🎜🎜🎜 🎜$p1🎜🎜= 🎜🎜新しい🎜🎜人(🎜🎜"张三" 🎜🎜,
🎜🎜「男性」🎜🎜、20);🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜32🎜🎜🎜🎜$p2🎜🎜= クローン
🎜🎜$p1🎜🎜;🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜33🎜🎜🎜🎜$p1🎜🎜->say();🎜🎜🎜 🎜🎜🎜🎜🎜🎜🎜🎜🎜34🎜🎜 🎜🎜$p2🎜🎜->say();🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜35🎜🎜🎜🎜?>🎜🎜🎜🎜🎜 🎜🎜🎜🎜上記の例の出力: 🎜🎜私の名前:張三 性別:男性 年齢:20歳🎜 私の名前:偽の張三です 性別:男性 年齢:30歳🎜🎜
🎜
上記は、PHP のクローン オブジェクトをその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。 🎜
🎜
🎜
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31
|