⊗ppOpAdPBR 23 of 107 menu

การส่งออบเจ็กต์โดยการอ้างอิงใน OOP ใน PHP

สมมติว่าเรามีคลาส User แบบนี้:

<?php class User { public $name; public $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } } ?>

สมมติว่าเราสร้างออบเจ็กต์ของคลาสนี้:

<?php $user = new User('john', 30); ?>

ลองนึกถึงสถานการณ์ต่อไปนี้: คุณ ต้องการกำหนดค่าของตัวแปร $user ให้กับ ตัวแปรอื่น เช่น $test

หากไม่ใช่เรื่องของออบเจ็กต์ แต่เป็น ไพรมิทีฟ, เช่น สตริง ตัวเลข อาร์เรย์ เป็นต้น ค่าที่จะเข้าไปในตัวแปร $test จะเป็นสำเนาของ ค่าจากตัวแปร $user

หมายความว่าการเปลี่ยนแปลงตัวแปรใด ๆ ในภายหลังจะไม่ส่งผลต่อค่าของอีกตัวแปรหนึ่ง ลองดูตัวอย่าง:

<?php $user = 1; $test = $user; // ในตัวแปร $test ตอนนี้มีค่า 1 $test = 2; // ในตัวแปร $test ตอนนี้มีค่า 2 ส่วนใน $user ยังคงเป็น 1 ?>

กับออบเจ็กต์นั้นต่างออกไป - เมื่อกำหนดค่าให้กับ ตัวแปรอื่น ออบเจ็กต์จะไม่ถูกคัดลอก แต่จะถูกส่ง โดยการอ้างอิง: นั่นหมายความว่า ตัวแปรทั้งสองนี้มีค่าที่เป็นออบเจ็กต์อันเดียวกัน สิ่งนี้มีผลกระทบที่สำคัญ: หากเปลี่ยนแปลงคุณสมบัติบางอย่างของออบเจ็กต์ด้วย ตัวแปรหนึ่ง การเปลี่ยนแปลงเดียวกันนี้จะปรากฏในตัวแปรที่สองด้วย

มาลองดูในทางปฏิบัติกัน สร้างออบเจ็กต์ผู้ใช้:

<?php $user = new User('john', 30); ?>

กำหนดออบเจ็กต์ให้กับตัวแปรอื่น:

<?php $test = $user; ?>

เปลี่ยนคุณสมบัติ name ในตัวแปร $test

<?php $test->name = 'eric'; ?>

ลองตรวจสอบว่าออบเจ็กต์ร่วมกันเปลี่ยนไปหรือไม่ แสดงคุณสมบัติ name จากตัวแปร $user:

<?php echo $user->name; // จะได้ 'eric'! ?>

สร้างคลาส Product โดยที่ จะมีคุณสมบัติต่อไปนี้: name, price

สร้างออบเจ็กต์ของคลาส Product บันทึก ไว้ในตัวแปร $product1

กำหนดค่าของตัวแปร $product1 ให้กับตัวแปร $product2 ตรวจสอบ ว่าทั้งสองตัวแปรอ้างอิงไปยังออบเจ็กต์อันเดียวกัน

ไทย
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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ