Belajar PHP OOP Part 1.18 : Getter & Setter
Encapsulation
- Encapsulation artinya memastikan data sensitif sebuah object tersembunyi dari akses luar
- Hal ini betujuan agar kita bisa menjaga agar data sebuah object tetap baik dan valid
- Untuk mencapai ini, biasanya kita akan membuat sebuah properties menggunakan access modifier private, sehingga tidak bisa diakses atau diubah dari luar
- Agar bisa diubah, kita akan menyediakan function untuk mengubah dan mendapatkan properties tersebut
Getter dan Setter
- Di PHP, proses encapsulation sudah dibuat standarisasinya, dimana kita bisa menggunakan Getter dan Setter Method/Function
- Getter adalah function yang dibuat untuk mengmabil data filed
- Setter adalah function untuk mengubah data filed
<?php
class Category
{
private string $name;
private bool $expensive;
//Method Ambil data (Getter)
public function getName(): string
{
return $this->name;
}
//Method Ubah Data (Setter)
public function setName(string $name): void
{
$this->name = $name;
}
//Method Ambil Data (Getter Bool)
public function isExpensive(): bool
{
return $this->expensive;
}
//Method Ubah Data (Setter Bool)
public function setExpensive(bool $expensive): void
{
$this->expensive = $expensive;
}
}
<?php
require_once "data/Category.php";
$category = new Category();
$category->setName("Handphone");
$category->setExpensive(true);
echo "Name : {$category->getName()}" . PHP_EOL;
echo "Expensive : {$category->isExpensive()}" . PHP_EOL;
Menambahkan Validation di Setter
<?php
class Category
{
private string $name;
private bool $expensive;
//Method Ambil data (Getter)
public function getName(): string
{
return $this->name;
}
//Method Ubah Data (Setter)
public function setName(string $name): void
{
//Cek Validation Setter
if (trim($name != "")){
$this->name = $name;
}
}
//Method Ambil Data (Getter Bool)
public function isExpensive(): bool
{
return $this->expensive;
}
//Method Ubah Data (Setter Bool)
public function setExpensive(bool $expensive): void
{
$this->expensive = $expensive;
}
}
Kondisi Object Kosong
<?php
class Category
{
private string $name;
private bool $expensive;
//Method Ambil data (Getter)
public function getName(): string
{
return $this->name;
}
//Method Ubah Data (Setter)
public function setName(string $name): void
{
if (trim($name) != "" ){
$this->name = $name;
}
}
//Method Ambil Data (Getter Bool)
public function isExpensive(): bool
{
return $this->expensive;
}
//Method Ubah Data (Setter Bool)
public function setExpensive(bool $expensive): void
{
$this->expensive = $expensive;
}
}
<?php
require_once "data/Category.php";
$category = new Category();
$category->setName("Handphone");
$category->setExpensive(true);
//Mengubah Property Menjadi Kosong
$category->setName("");
echo "Name : {$category->getName()}" . PHP_EOL;
echo "Expensive : {$category->isExpensive()}" . PHP_EOL;