วิธีมาตรฐานในการสร้างวัตถุ "ว่าง" คือ:
$oVal = new stdClass();
แต่ด้วย PHP> = 5.4 ฉันเองชอบใช้:
$oVal = (object)[];
มันสั้นกว่าและฉันคิดว่ามันชัดเจนกว่าเพราะstdClassอาจทำให้เข้าใจผิดกับโปรแกรมเมอร์มือใหม่ (เช่น "เฮ้ฉันต้องการวัตถุไม่ใช่คลาส!" ... )
เช่นเดียวกันกับ PHP <5.4 คือ:
$oVal = (object) array();
(object)[]
new stdClass()
เทียบเท่ากับ
ดูคู่มือ PHP ( ที่นี่ ):
stdClass : สร้างโดยพิมพ์ไปยังวัตถุ
และ ( ที่นี่ ):
หากวัตถุถูกแปลงเป็นวัตถุวัตถุนั้นจะไม่ถูกปรับเปลี่ยน ถ้าค่าของชนิดอื่น ๆ จะถูกแปลงเป็นวัตถุตัวอย่างใหม่ของ stdClass ตัวในชั้นเรียนจะถูกสร้างขึ้น
อย่างไรก็ตามโปรดจำไว้ว่าempty ($ oVal) จะส่งกลับค่า falseเนื่องจาก @PaulP กล่าวว่า:
วัตถุที่ไม่มีคุณสมบัติจะไม่ถือว่าว่างเปล่าอีกต่อไป
เกี่ยวกับตัวอย่างของคุณถ้าคุณเขียน:
$oVal = new stdClass();
$oVal->key1->var1 = "something"; // PHP creates a Warning here
$oVal->key1->var2 = "something else";
PHP สร้างคำเตือนดังต่อไปนี้โดยปริยายสร้างคุณสมบัติkey1
(วัตถุเอง)
คำเตือน: การสร้างวัตถุเริ่มต้นจากค่าว่าง
นี่อาจเป็นปัญหาหากการกำหนดค่าของคุณ (ดูระดับการรายงานข้อผิดพลาด ) แสดงคำเตือนนี้ไปยังเบราว์เซอร์ นี่เป็นอีกหัวข้อทั้งหมด แต่แนวทางที่รวดเร็วและสกปรกอาจใช้ตัวดำเนินการควบคุมข้อผิดพลาด (@)เพื่อละเว้นคำเตือน:
$oVal = new stdClass();
@$oVal->key1->var1 = "something"; // the warning is ignored thanks to @
$oVal->key1->var2 = "something else";
$var = (object) (boolean) (string) (int) (array) new StdClass;
คุณก็รู้ว่าปลอดภัย