347 of 410 menu

เมธอด __clone

เมธอด __clone ถูกเรียกอัตโนมัติเมื่อใช้โอเปอเรเตอร์ clone มันช่วยให้กำหนดลอจิกการคัดลอกอ็อบเจ็กต์เองได้ โดยค่าเริ่มต้น PHP ทำการคัดลอกแบบตื้น (shallow copy) คุณสมบัติทั้งหมดของอ็อบเจ็กต์ เมธอด __clone มีประโยชน์ เมื่อต้องการใช้งานการคัดลอกแบบลึก (deep copy) หรือเปลี่ยนพฤติกรรมเมื่อโคลน

ไวยากรณ์

public function __clone(): void

ตัวอย่าง

ลองใช้งานการโคลนอ็อบเจ็กต์พื้นฐาน:

<?php class User { public $name; public function __construct($name) { $this->name = $name; } public function __clone() { echo 'อ็อบเจ็กต์ถูกโคลนแล้ว'; } } $user1 = new User('John'); $user2 = clone $user1; ?>

ผลลัพธ์จากการรันโค้ด:

'อ็อบเจ็กต์ถูกโคลนแล้ว'

ตัวอย่าง

ลองใช้งานการคัดลอกแบบลึกของอ็อบเจ็กต์ที่มีอ็อบเจ็กต์ซ้อนอยู่ข้างใน:

<?php class Address { public $city; public function __construct($city) { $this->city = $city; } } class User { public $name; public $address; public function __construct($name, $city) { $this->name = $name; $this->address = new Address($city); } public function __clone() { $this->address = clone $this->address; } } $user1 = new User('John', 'New York'); $user2 = clone $user1; $user2->address->city = 'Boston'; echo $user1->address->city; ?>

ผลลัพธ์จากการรันโค้ด:

'New York'

ตัวอย่าง

เพิ่มตัวระบุเฉพาะที่ไม่ซ้ำเมื่อโคลน:

<?php class Product { public $id; public $name; public function __construct($name) { $this->id = uniqid(); $this->name = $name; } public function __clone() { $this->id = uniqid(); } } $product1 = new Product('Laptop'); $product2 = clone $product1; echo $product1->id . ' ' . $product2->id; ?>

ผลลัพธ์จากการรันโค้ด (ตัวอย่าง):

'5f1a2b3c 5f1a2b3d'

ดูเพิ่มเติม

  • เมธอด __construct,
    ซึ่งเป็นตัวสร้างอ็อบเจ็กต์ (constructor)
ไทย
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣTürkmenTürkçeЎзбекOʻzbekTiếng Việt
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ