Cara standar untuk membuat objek "kosong" adalah:
$oVal = new stdClass();
Tetapi, dengan PHP> = 5.4, saya pribadi lebih suka menggunakan:
$oVal = (object)[];
Ini lebih pendek dan saya pribadi menganggapnya lebih jelas karena stdClass dapat menyesatkan programmer pemula (yaitu "Hei, saya ingin objek, bukan kelas!" ...).
Sama dengan PHP <5.4 adalah:
$oVal = (object) array();
(object)[]
setara dengan new stdClass()
.
Lihat manual PHP ( sini ):
stdClass : Dibuat oleh typecasting ke objek.
dan ( sini ):
Jika suatu objek dikonversi ke objek, itu tidak dimodifikasi. Jika nilai tipe apa pun dikonversi ke objek, instance baru dari kelas bawaan stdClass dibuat .
Namun ingat itu kosong ($ oVal) mengembalikan false , seperti yang dikatakan @PaulP:
Objek tanpa properti tidak lagi dianggap kosong.
Mengenai contoh Anda, jika Anda menulis:
$oVal = new stdClass();
$oVal->key1->var1 = "something"; // PHP creates a Warning here
$oVal->key1->var2 = "something else";
PHP membuat Peringatan berikut ini, secara implisit membuat properti key1
(objek itu sendiri)
Peringatan: Membuat objek default dari nilai kosong
Ini bisa menjadi masalah jika konfigurasi Anda (lihat tingkat pelaporan kesalahan ) menunjukkan peringatan ini ke browser. Ini adalah seluruh topik lain, tetapi pendekatan cepat dan kotor bisa menggunakan operator kontrol kesalahan (@) untuk mengabaikan peringatan:
$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;
Anda tahu, hanya untuk aman.