Pendahuluan
Pertemuan kali ini masih ada hubungannya dengan pertemuan yang sebelumnya tentang konversi tipe data PHP.
Pada pertemuan tersebut kita telah membahas bagaimana cara mengkonversi suatu tipe data ke tipe data lainnya baik secara otomatis (tipe data juggling) mau pun secara manual (tipe data casting).
Akan tetapi, masih ada satu hal yang belum kita bahas: yaitu konversi data array ke data objek, dan sebaliknya konversi data objek ke data array.
Perhatikan kode program berikut:
<?php
$mahasiswa = [
'nama' => 'Nurul Huda',
'domisili' => 'Surabaya'
];
$mahasiswa = (object) $mahasiswa;
Apa yang terjadi? Array $mahasiswa
di atas akan dikonversi menjadi instan dari objek stdClass
.
Apa Itu stdClass Dalam PHP?
Objek stdClass
adalah objek kosong bawaan PHP. Secara asal, ia tidak memiliki attribut apa pun. Objek stdClass
akan digunakan oleh interpreter PHP untuk mengkonversi tipe data non objek menjadi tipe data objek. Contohnya adalah seperti variabel $mahasiswa
di atas.
Jika kita menjalankan fungsi print_r
, kita akan melihat bahwa variabel $mahasiswa
sekarang adalah stdClass
.
<?php
echo "<pre>";
print_r($mahasiswa);
echo "</pre>";
Output:
stdClass Object
(
[nama] => Nurul Huda
[domisili] => Surabaya
)
Cara Mengakses Data Dari Objek stdClass
Pada array asosiatif, kita menampilkan data dengan memanggil key dari array tersebut dengan menggunakan tanda kurung siku ["key"]
.
Sedangkan untuk tipe data objek (termasuk stdClass), kita bisa menampilkan data-datanya dengan menggunakan tanda panah (->
). Perhatikan contoh berikut:
<?php
echo "Nama: {$mahasiswa->nama} <br>";
echo "Domisili: {$mahasiswa->domisili} <br>";
Sintaksnya lebih enak dilihat, kan?
Perintah di atas akan menghasilkan output sebagai berikut:
Nama: Nurul Huda
Domisili: Surabaya
Konversi Array ke Objek
Seperti pada contoh variabel $mahasiswa
di atas, kita bisa mengkonversi array ke sebuah objek menggunakan tipe data casting.
Akan tetapi, perlu diperhatikan, misalkan yang kita konversi adalah array multidimensi, maka yang akan dikonversi menjadi objek hanyalah array utamanya saja.
Perhatikan contoh berikut:
<?php
$mahasiswa = (object) [
"nama" => "Fulan bin Fulan",
"domisili" => "Surabaya",
"sosial_media" => [
"facebook" => "https://facebook.com/fulanbinfulan",
"instagram" => "https://instagram.com/fulan.bin.fulan",
"twitter" => "https://twitter.com/fulan_bin_fulan"
]
];
Pada kode program di atas, variabel $mahasiswa
adalah suatu objek. Karena ketika kita pertama kali mendefinisikannya, langsung kita casting dengan perintah (object) [...]
.
Akan tetapi perlu diperhatikan, bahwasanya array ke-dua dalam data $mahasiswa->sosial_media
, ia tetaplah array. Tidak terkonversi menjadi objek. Karena yang dikonversi menjadi objek hanyalah array utamanya saja, bukan array-array yang berada di dalamnya.
Jika kita menampilkan variabel $mahasiswa
dengan perintah print_r
:
<?php
echo "<pre>";
print_r($mahasiswa);
echo "</pre>";
Kita akan dapati output sebagai berikut:
stdClass Object
(
[nama] => Fulan bin Fulan
[domisili] => Surabaya
[sosial_media] => Array
(
[facebook] => https://facebook.com/fulanbinfulan
[instagram] => https://instagram.com/fulan.bin.fulan
[twitter] => https://twitter.com/fulan_bin_fulan
)
)
Lalu bagaimana jika kita ingin mengkonversi array asosiatif sosial_media
?
Caranya sama saja, kita bisa melakukannya seperti berikut ini:
<?php
$mahasiswa->sosial_media = (object) $mahasiswa->sosial_media;
Jalankan lagi program print_r
, maka sekarang kita saksikan bahwa data sosial_media
bertipe data stdClass
:
stdClass Object
(
[nama] => Fulan bin Fulan
[domisili] => Surabaya
[sosial_media] => stdClass Object
(
[facebook] => https://facebook.com/fulanbinfulan
[instagram] => https://instagram.com/fulan.bin.fulan
[twitter] => https://twitter.com/fulan_bin_fulan
)
)
Konversi Objek ke Array
Sebaliknya, kita juga bisa mengkonversi data objek ke dalam array. Caranya sama saja, kita hanya perlu mengganti sintaks (object)
dengan (array)
.
Perhatikan contoh berikut:
<?php
$mahasiswa = (object) [
"nama" => "Nurul Huda",
"domisili" => "Sidoarjo"
];
$mahasiswa = (array) $mahasiswa;
Kesimpulan
Kelas stdClass
dalam PHP adalah objek kosong yang digunakan ketika kita mengkonversi suatu data non-objek menjadi data objek.
Kita bisa mengakses data pada objek menggunakan tanda panah ->
. Selain itu, kita juga bisa mengubah data pada stdClass
sebagaimana kita mengubah data pada array.
Jika array yang kita konversi ke dalam objek ternyata bersifat multidimensi, maka hanya array utama saja yang terkonversi menjadi objek. Array-array yang lain di dalamnya tetaplah bertipe data array.
Pembahasan Selanjutnya
Insyaallah pada pembahasan selanjutnya, kita akan mengambil pelajaran tentang JSON pada PHP.
Bagaimana caranya? Ikuti terus seri tutorial PHP tingkat menengah ini, ya!