Tolong jelaskan apa stdClass
itu.
1049
stdClass
adalah kelas kosong generik PHP, seperti Object
di Jawa atau object
Python ( Edit: tetapi tidak benar-benar digunakan sebagai kelas dasar universal; terima kasih @Ciaran untuk menunjukkannya ).
Ini berguna untuk objek anonim, properti dinamis, dll.
Cara mudah untuk mempertimbangkan StdClass adalah sebagai alternatif dari array asosiatif. Lihat contoh ini di bawah ini yang menunjukkan bagaimana json_decode()
memungkinkan untuk mendapatkan instance StdClass atau array asosiatif. Juga tetapi tidak ditampilkan dalam contoh ini, SoapClient::__soapCall
mengembalikan instance StdClass.
<?php
//Example with StdClass
$json = '{ "foo": "bar", "number": 42 }';
$stdInstance = json_decode($json);
echo $stdInstance->foo . PHP_EOL; //"bar"
echo $stdInstance->number . PHP_EOL; //42
//Example with associative array
$array = json_decode($json, true);
echo $array['foo'] . PHP_EOL; //"bar"
echo $array['number'] . PHP_EOL; //42
Lihat Properti Dinamis dalam PHP dan StdClass untuk contoh lebih lanjut.
{}
konstruk JavaScript .function(StdClass $a, array $params)
vs memeriksa apakah$a
objek daninstanceof
.stdClass
hanya kelas generik 'kosong' yang digunakan saat casting tipe lain ke objek. Meskipun apa yang dua jawaban lain mengatakan,stdClass
adalah tidak kelas dasar untuk objek di PHP. Ini dapat ditunjukkan dengan cukup mudah:Saya tidak percaya ada konsep objek dasar dalam PHP
sumber
stdClass adalah fitur PHP hebat lainnya. Anda dapat membuat kelas PHP anonim. Mari kita periksa contoh.
sekarang anggap Anda memiliki kelas lain yang akan diinisialisasi dengan objek halaman dan jalankan basis di atasnya.
Sekarang Anda harus membuat objek PageShow baru dengan Halaman Obyek.
Di sini tidak perlu menulis Template Kelas baru untuk ini, Anda cukup menggunakan stdClass untuk membuat Kelas dengan cepat.
sumber
stdClass
.Juga patut dicatat, sebuah
stdClass
objek dapat dibuat dari penggunaannyajson_decode()
juga.sumber
True
. Boolean adalah huruf keciltrue
ataufalse
.Menggunakan stdClass Anda dapat membuat objek baru dengan properti itu sendiri. Pertimbangkan contoh berikut yang mewakili detail pengguna sebagai array asosiatif.
Jika Anda perlu merepresentasikan detail yang sama dengan properti suatu objek, Anda bisa menggunakan stdClass seperti di bawah ini.
Jika Anda seorang pengembang Joomla, rujuk contoh ini di dokumen Joomla untuk pemahaman lebih lanjut.
sumber
Juga,
menghasilkan objek stdClass - otomatis dicor
Saya menemukan ini hari ini dengan salah mengeja:
Keren!
sumber
stdClass bukan kelas anonim atau objek anonim
Jawaban di sini mencakup ekspresi yang
stdClass
merupakan kelas anonim atau bahkan objek anonim. Itu tidak benar.stdClass
hanyalah kelas standar yang telah ditentukan sebelumnya. Anda dapat memeriksa ini menggunakaninstanceof
operator atau fungsiget_class
. Tidak ada yang istimewa di sini. PHP menggunakan kelas ini saat memberikan nilai lain ke objek.Dalam banyak kasus di mana
stdClass
digunakan oleh pemrogram array adalah pilihan yang lebih baik, karena fungsi yang berguna dan fakta bahwa usecase ini mewakili struktur data bukan objek nyata.sumber
Juga perlu dicatat bahwa dengan menggunakan Casting Anda sebenarnya tidak perlu membuat objek seperti pada jawaban yang diberikan oleh @Bandula. Alih-alih, Anda cukup melemparkan array ke objek dan stdClass dikembalikan. Sebagai contoh:
Output: again
sumber
Sebenarnya saya mencoba membuat stdClass kosong dan membandingkan kecepatan ke kelas kosong.
kemudian mulai membuat 1000 stdClasses dan emps ... kelas kosong dilakukan di sekitar 1.100 mikrodetik sementara stdClasses mengambil lebih dari 1.700 mikrodetik. Jadi saya kira lebih baik untuk membuat kelas boneka Anda sendiri untuk menyimpan data jika Anda ingin menggunakan objek untuk itu sangat buruk (array jauh lebih cepat baik untuk menulis maupun membaca).
sumber
stdClass objek yang digunakan
StdClass memungkinkan Anda untuk membuat kelas anonim dan dengan casting objek Anda juga dapat mengakses kunci array asosiatif dalam gaya OOP. Sama seperti Anda akan mengakses properti objek biasa.
Contoh
akan bergema
sumber
Jika Anda ingin dengan cepat membuat objek baru untuk menyimpan beberapa data tentang buku. Anda akan melakukan sesuatu seperti ini:
Silakan periksa situs - http://www.webmaster-source.com/2009/08/20/php-stdclass-storing-data-object-instead-array/ untuk rincian lebih lanjut.
sumber
Harap diingat bahwa 2 stdClasses kosong tidak sepenuhnya sama. Ini sangat penting ketika menulis harapan ejekan.
sumber
Manual php.net memiliki beberapa penjelasan yang solid dan contoh yang dikontribusikan oleh pengguna tentang apa stdClass, saya terutama menyukai yang ini http://php.net/manual/en/language.oop5.basic.php#92123 , https: // stackoverflow.com/a/1434375/2352773 .
sumber
stdclass adalah cara di mana php hindari berhenti menafsirkan skrip ketika ada beberapa data yang harus dimasukkan ke dalam kelas, tetapi sayangnya kelas ini tidak didefinisikan
Contoh:
Di sini data akan dimasukkan ke dalam 'Tugas' yang telah ditentukan. Tetapi, jika kita melakukan kode seperti ini:
lalu php akan memasukkan hasilnya stdclass .
secara sederhana phpmengatakan bahwa: lihat, kami memiliki KIDS yang baik [Objek] Di sini tetapi tanpa Orang Tua. Jadi, kami akan mengirim mereka ke Rumah Perawatan anak bayistdclass :)
sumber
Anda juga dapat menggunakan
object
untuk melemparkan array ke objek pilihan Anda:Sekarang untuk membuat objek tipe
Example
dan menginisialisasi Anda dapat melakukan salah satu dari ini:ATAU
Metode kedua sebagian besar berguna untuk menginisialisasi objek dengan banyak properti.
sumber
stClass adalah kelas kosong yang dibuat oleh php itu sendiri, dan harus digunakan oleh php saja, karena bukan hanya kelas "kosong", php menggunakan stdClass untuk mengonversi array ke gaya objek jika Anda perlu menggunakan stdClass, saya merekomendasikan dua opsi yang lebih baik : 1- gunakan array (jauh lebih cepat dari kelas) 2- membuat kelas kosong Anda sendiri dan menggunakannya
apa yang membuat seseorang berpikir tentang menggunakan gaya objek, bukan gaya array ???
sumber
Alasan mengapa kita memiliki stdClass adalah karena dalam PHP tidak ada cara untuk membedakan array normal dari associate array (seperti dalam Javascript yang Anda miliki
{}
untuk objek dan[]
untuk array untuk membedakannya).Jadi ini menciptakan masalah untuk objek kosong. Ambil contoh ini.
PHP:
Mari kita asumsikan Anda ingin menyandikan JSON variabel $ c
Sekarang katakanlah Anda menghapus semua kunci dari
$b
membuatnya kosong. Karena$b
sekarang kosong (Anda menghapus semua kunci ingat?), Sepertinya[]
yang dapat berupa array atau objek jika Anda melihatnya.Jadi jika Anda melakukan json_encode lagi, hasilnya akan berbeda
Ini adalah masalah karena kita tahu
b
bahwa seharusnya menjadi associate array tetapi PHP (atau fungsi apa pun seperti json_encode) tidak.Jadi stdClass datang untuk menyelamatkan. Ambil contoh yang sama lagi
Jadi sekarang bahkan jika Anda menghapus semua kunci dari
$b
dan membuatnya kosong, karena ini adalah stdClass itu tidak masalah dan ketika Anda json_encode Anda akan mendapatkan ini:Ini juga alasan mengapa
json_encode
danjson_decode
secara default mengembalikan stdClass.sumber