4. MENGAKSES PROPERTIES DAN METHODS

Setelah sebuah object dibuat, kita dapat mengakses property dan method menggunakan tanda ->. Sintaks dasarnya adalah sebagai berikut:

$object->propertyname;
$object->methodname([arg, ...]);

Sebagai contoh, jika kita memiliki object dari class Hewan, kita bisa mengakses property dan method seperti ini:

echo "Hewan ini berumur {$anjing->umur} tahun."; // Mengakses property
$anjing->menggonggong(); // Memanggil method
$anjing->setUmur(5); // Memanggil method dengan argumen

Method dalam object berfungsi seperti fungsi biasa, tetapi hanya berlaku dalam lingkup object tersebut. Method juga dapat mengembalikan nilai:

$tipe = $anjing->getTipe();

Dalam definisi class, kita dapat menentukan apakah suatu property dan method bisa diakses dari luar kelas menggunakan modifier public dan private untuk enkapsulasi.

Menggunakan Variabel sebagai Nama Property

Kita juga bisa menggunakan variable variables untuk mengakses property secara dinamis:

$prop = 'umur';
echo $anjing->$prop; // Sama dengan echo $anjing->umur;

Method Statis

Method statis adalah method yang dipanggil pada class, bukan pada object. Method ini tidak dapat mengakses property dari object. Sintaks pemanggilannya menggunakan :: :

Formatter::formatText("Hello, world");

Saat mendeklarasikan class, kita bisa menandai method atau property sebagai statis menggunakan kata kunci static.

Object Diteruskan sebagai Referensi

Ketika kita menetapkan suatu object ke variabel lain, variabel baru tersebut tidak membuat salinan object, tetapi hanya mengacu pada object yang sama.

$hewan1 = new Hewan("Harimau", 10);
$hewan2 = $hewan1; // Kedua variabel mengacu ke objek yang sama
$hewan2->setTipe("Singa");

echo $hewan1->getTipe(); // Output: Singa

Karena $hewan1 dan $hewan2 menunjuk ke object yang sama, perubahan pada salah satu variabel akan berdampak pada variabel lainnya.

Membuat Salinan Object

Jika kita ingin membuat salinan independen dari suatu object, gunakan operator clone:

$hewan1 = new Hewan("Harimau", 10);
$hewan2 = clone $hewan1; // Membuat salinan objek

$hewan2->setTipe("Singa");

echo $hewan1->getTipe(); // Output: Harimau
echo $hewan2->getTipe(); // Output: Singa

Jika class memiliki method __clone(), method ini akan otomatis dipanggil setelah object dikloning. Method ini berguna jika object memiliki sumber daya eksternal (seperti koneksi database atau file) yang perlu dibuat ulang, bukan hanya disalin.

AYO PAHAMI!


Petunjuk:

  1. Perhatikan kode program PHP yang ditampilkan di kotak sebelah kiri.
  2. Ketik ulang seluruh baris kode tersebut ke dalam editor di sebelah kanan.
  3. Pastikan setiap baris dan struktur penulisan sesuai dengan contoh (termasuk titik koma, kurung, dll).
  4. Tekan tombol RUN di dalam editor untuk menjalankan program.
  5. Perhatikan hasil keluaran di bawah editor. Apa yang ditampilkan?
<?php
class Pengguna {
  public $nama, $password;

  function simpanPengguna() {
    echo "Data pengguna telah disimpan.";
  }
}

$pengguna = new Pengguna;
print_r($pengguna);
echo "<br>";

$pengguna->nama = "Alice";
$pengguna->password = "secret123";
print_r($pengguna);
echo "<br>";

$pengguna->simpanPengguna();

Dari contoh di atas, kita bisa melihat bagaimana property dari sebuah object dapat diakses dan diubah, serta bagaimana method dalam class dijalankan untuk menampilkan suatu proses. Fungsi print_r() membantu menampilkan isi object dan memudahkan proses debugging.

LATIHAN

Ayo buktikan pemahamanmu!

Lengkapilah potongan kode berikut ini untuk mengakses dan memanggil property serta method dari sebuah object!
Isilah bagian kosong (___) dengan potongan kode yang sesuai agar program menampilkan merk kendaraan dan menjalankan method nyalakanMesin().

<?php
class Kendaraan {
    public $merk = "Toyota";

    public function nyalakanMesin() {
        echo "Mesin dinyalakan.";
    }
}

$mobil = new Kendaraan;
echo ___ . PHP_EOL;
$mobil->___();
?>

Seret potongan kode berikut ke tempat yang kosong:

  • nyalakanMesin
  • $this->merk
  • $mobil->merk