นิยามและการใช้งาน
ใน PHP Object (ออบเจ็กต์) เป็นชนิดข้อมูลร่วม (compound data type) คล้ายกับอาร์เรย์ สามารถเก็บค่าประเภทต่างๆ หลายค่าไว้ในตัวแปรเดียวได้ ออบเจ็กต์เป็นอินสแตนซ์ของคลาสในตัว (built-in) หรือคลาสที่ผู้ใช้กำหนดเอง นอกจากคุณสมบัติ (properties) แล้ว คลาสยังกำหนดฟังก์ชันการทำงานที่เกี่ยวข้องกับข้อมูลอีกด้วย
ตัวแปรหลัก (scalar), อาร์เรย์ และออบเจ็กต์อื่นๆ สามารถแปลงเป็นชนิดข้อมูลออบเจ็กต์ได้โดยใช้ตัวดำเนินการแปลงชนิด (casting operator) PHP มี stdClass เป็นคลาสว่างสำหรับการใช้งานทั่วไป ซึ่งมีประโยชน์สำหรับการเพิ่มคุณสมบัติแบบไดนามิกและการแปลงชนิด
รูปแบบไวยากรณ์
เพื่อประกาศออบเจ็กต์ของคลาส ต้องใช้คำสั่ง new
class myclass { .. .. } $obj=new myclass;
ตัวอย่าง
<?php class SayHello{ function hello(){ echo "Hello World"; } } $obj=new SayHello; $obj->hello(); ?>
ผลลัพธ์
Hello World
ออบเจ็กต์ของ stdClass จะเริ่มต้นเป็น null สามารถเพิ่มคุณสมบัติได้แบบไดนามิก:
ตัวอย่าง
<?php $obj=new stdClass; $obj->name="Deepak"; $obj->age=21; $obj->marks=75; print_r($obj); ?>
ผลลัพธ์
stdClass Object( [name] => Deepak [age] => 21 [marks] => 75 )
อาร์เรย์สามารถแปลงเป็นออบเจ็กต์ได้ดังนี้:
ตัวอย่าง
<?php $arr=array("name"=>"Deepak", "age"=>21, "marks"=>75); $obj=(object)$arr; print_r($obj); ?>
ผลลัพธ์
stdClass Object( [name] => Deepak [age] => 21 [marks] => 75 )
ในทางกลับกัน ออบเจ็กต์ก็สามารถแปลงเป็นอาร์เรย์ได้:
ตัวอย่าง
<?php $obj=new stdClass; $obj->name="Deepak"; $obj->age=21; $obj->marks=75; $arr=(array)$obj; print_r($arr); ?>
ผลลัพธ์
Array( [name] => Deepak [age] => 21 [marks] => 75 )
ตัวแปรชนิดสเกลาร์ (scalar) ใดๆ ก็สามารถแปลงเป็นออบเจ็กต์ได้โดยการแปลงชนิด ค่าของตัวแปรสเกลาร์จะกลายเป็นค่าของคุณสมบัติ scalar ของออบเจ็กต์
ตัวอย่าง
<?php $name="Deepak"; $age=21; $percent=75.50; $obj1=(object)$name; print_r($obj1); $obj2=(object)$age; print_r($obj2); $obj3=(object)$percent; print_r($obj3); ?>
ผลลัพธ์
stdClass Object( [scalar] => Deepak ) stdClass Object( [scalar] => 21 ) stdClass Object( [scalar] => 75.5 )