8. Mengenal stdClass

PHP: Mengenal stdClass

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!