Naaa, ketemu lagi dengan kiat di pembelajaran Object Oriented Programming 🕮
Di
artikel sebelumnya terkait penggunaan parameter, kita memiliki bentuk terakhir class
Buku {} yang ada propertinya sejumlah empat buah yaitu
$nama, $penulis, $penerbit dan $tahunTerbit.
Juga kita telah membuat sebuah method dengan nama setNama() beserta parameter di dalamnya bukan ? 😁
Bentuk kode lengkap kita sebelumnya adalah :
<?php
class Buku {
var $nama;
var $penulis;
var $penerbit;
var $tahunTerbit;
public function setNama($nama, $penulis, $penerbit, $tahunTerbit) {
echo "DATA BUKU BARU<br>";
echo "Nama Buku : ".$this->nama = $nama; // mengisikan nilai properti dengan parameter $nama milik method, kemudian tampilkan hasilnya dengan 'echo'
echo "<br>Penulis : ".$this->penulis = $penulis;
echo "<br>Penerbit : ".$this->penerbit = $penerbit;
echo "<br>Tahun Terbit : ".$this->tahunTerbit = $tahunTerbit;
}
}
$bukuSejaran = new Buku();
$bukuSejaran->setNama("Sejarah Komputer Awal", "Ahmad Istakim", "Divapress", "2025");
?>
Dari kode tersebut kita bisa menampilkan sebuah informasi di web tapi sebenarnya ada sesuatu yang bisa dikatakan mengganjal. Ada fungsi yang peletakannya kurang tepat. Yaitu peletakan perintah echo di dalam fungsi setNama().
Kenapa!?
Seperti yang telah disebutkan di artikel lalu, bahwa method tersebut dinamakan dengan setter. Method ini umumnya digunakan untuk hanya mengisikan / memberikan nilai ke dalam properties milik class. Tidak untuk menampilkan data!
Bagaimana solusinya dong! Apakah kode kita sebelumnya salah ?
Solusinya adalah kita menggunakan method lain yang dinamakan dengan getter. Tidak! Kode kita sebelumnya tidak salah, hanya saja kurang tepat dalam penulisan.
Buktinya tetap berhasil menampilkan data bukan di browser 😌
Ciri-ciri dari method setter adalah di dalamnya ada parameter dan di tubuh method hanya menggunakan perintah :
$this->parameter = $property;
Tidak di awali dengan perintah echo sebelum $this. Kemudian untuk nama method diawali dengan set diikuti dengan nama method. Seperti method kita di kode tersebut, yaitu setNama(). Tetapi tidak harus juga diawali dengan set, ini hanya sebagai penanda agar kita tidak lupa mana yang setter dan getter kalau kode kita sudah ribuan baris.
Ubah method setNama() kita, hilangkan perintah echo menjadi :
class Buku {
var $nama;
var $penulis;
var $penerbit;
var $tahunTerbit;
public function setNama($nama, $penulis, $penerbit, $tahunTerbit) {
$this->nama = $nama; // hilangkan perintah echo
$this->penulis = $penulis;
$this->penerbit = $penerbit;
$this->tahunTerbit = $tahunTerbit;
}
}
Sekarang coba panggil kode kita tersebut, apa hasilnya!?
Tentunya disertai dengan pembuka dan penutup php ya 🍃
Kosong! 😌
Ya, walaupun kosong tapi kode kita benar og. Santai aja...
Sekarang kita tinggal buat method getter. Ingat! Untuk membedakan setter dan getter, biasakan untuk menggunakan kata set di awal method untuk getter dan get untuk method getter.
Di bawah scoop setter setNama(), kita buat method getNama(). Tidak usah disertai dengan parameter ya gaes.
public function getNama() {
}
Mudah bukan ?
Lengkapnya kode kita menjadi :
<?php
class Buku {
var $nama;
var $penulis;
var $penerbit;
var $tahunTerbit;
public function setNama($nama, $penulis, $penerbit, $tahunTerbit) {
$this->nama = $nama;
$this->penulis = $penulis;
$this->penerbit = $penerbit;
$this->tahunTerbit = $tahunTerbit;
}
public function getNama() { // method getter kita
}
}
$bukuSejaran = new Buku();
$bukuSejaran->setNama("Sejarah Komputer Awal", "Ahmad Istakim", "Divapress", "2025");
?>
Di dalam method getter inilah kita meletakkan perintah echo. Sekarang kita coba menggunakannya :
public function getNama() {
echo $this->nama;
}
Sekarang refresh browser kita, apa hasilnya? Pasti kosong dong, tidak muncul apa-apa. Karena kita belum memanggil method getter kita. Di bagian objek kita yang bernama $bukuSejarah hanya tertulis :
$bukuSejaran = new Buku();
$bukuSejaran->setNama("Sejarah Komputer Awal", "Ahmad Istakim", "Divapress", "2025");
Baru ada perintah membuat objek dan memanggil setter setNama() beserta isi dari parameter. Kita perlu memanggil getter kita juga akan ia berjalan / berfungsi. Bagaimana ? Ya sama dengan cara kita memanggil setter dong.
$bukuSejaran = new Buku();
$bukuSejaran->setNama("Sejarah Komputer Awal", "Ahmad Istakim", "Divapress", "2025");
$bukuSejaran->getNama();
Coba sekarang refresh browser!
Yeay!!! Tampil 😘
Kita lengkapi kode kita ya menjadi :
public function getNama() {
echo "DATA BUKU <br>";
echo "Nama Buku : ".$this->nama;
echo "<br>Penulis : ".$this->penulis;
echo "<br>Penerbit : ".$this->penerbit;
echo "<br>Tahun Terbit : ".$this->tahunTerbit;
}
}
Refresh kembali browser kita!
Horeee 😍
Kesimpulannya adalah setter merupakan method yang digunakan untuk memberikan sebuah nilai / value sedangkan getter merupakan method yang digunakan menampilkan data.
Kode lengkap :
<?php
class Buku {
var $nama;
var $penulis;
var $penerbit;
var $tahunTerbit;
public function setNama($nama, $penulis, $penerbit, $tahunTerbit) {
$this->nama = $nama;
$this->penulis = $penulis;
$this->penerbit = $penerbit;
$this->tahunTerbit = $tahunTerbit;
}
public function getNama() {
echo "DATA BUKU <br>";
echo "Nama Buku : ".$this->nama;
echo "<br>Penulis : ".$this->penulis;
echo "<br>Penerbit : ".$this->penerbit;
echo "<br>Tahun Terbit : ".$this->tahunTerbit;
}
}
$bukuSejaran = new Buku();
$bukuSejaran->setNama("Sejarah Komputer Awal", "Ahmad Istakim", "Divapress", "2025");
$bukuSejaran->getNama();
?>