2. MENDEKLARASIKAN PROPERTY

Misalkan kita memiliki class Mobil yang menyimpan data tentang mobil, seperti nama, warna, dan kecepatan. Di sini, kita mendeklarasikan properti nama, warna, dan kecepatan dalam class Mobil secara eksplisit.

```

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 Mobil {
    public $nama;  // Properti publik untuk nama mobil
    public $warna; // Properti publik untuk warna mobil
    private $kecepatan; // Properti privat untuk kecepatan mobil

    // Method untuk mengatur nama mobil
    public function setNama($namaBaru) {
        $this->nama = $namaBaru;
    }

    // Method untuk mengatur warna mobil
    public function setWarna($warnaBaru) {
        $this->warna = $warnaBaru;
    }

    // Method untuk mengatur kecepatan mobil
    private function setKecepatan($kecepatanBaru) {
        $this->kecepatan = $kecepatanBaru;
    }

    // Method untuk mendapatkan informasi mobil
    public function infoMobil() {
        return "Nama Mobil: " . $this->nama . ", Warna: " . $this->warna . ", Kecepatan: " . $this->kecepatan . " km/jam";
    }
}

// Membuat objek dari class Mobil
$mobilSaya = new Mobil();
$mobilSaya->setNama("Toyota Corolla");
$mobilSaya->setWarna("Merah");

// Akses ke properti dan method
echo $mobilSaya->infoMobil();

Pada contoh di atas, kita memiliki properti publik ($nama dan $warna) yang dapat diakses dari luar class, dan properti privat ($kecepatan) yang hanya dapat diakses melalui method dalam class itu sendiri.

```
Menetapkan Nilai Default pada Properti

PHP memungkinkan Anda untuk menetapkan nilai default pada properti class. Misalnya, kita ingin menetapkan nilai default untuk properti warna menjadi "Putih" dan untuk kecepatan menjadi 0.

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 Mobil {
    public $nama = "Honda Civic";  // Nilai default
    public $warna = "Putih";       // Nilai default
    private $kecepatan = 0;        // Nilai default

    public function infoMobil() {
        return "Nama Mobil: " . $this->nama . ", Warna: " . $this->warna . ", Kecepatan: " . $this->kecepatan . " km/jam";
    }
}

$mobilSaya = new Mobil();
echo $mobilSaya->infoMobil();

Pada contoh ini, jika kita tidak menetapkan nilai untuk properti nama, warna, dan kecepatan, mereka akan memiliki nilai default yang telah ditetapkan dalam class.

```
Menggunakan Properti Statis

Dalam beberapa kasus, kita ingin property yang terkait dengan class dan bukan dengan object individual. Ini dapat dilakukan dengan menggunakan properti static. Berikut adalah contoh penggunaan properti static untuk menghitung jumlah objek yang dibuat dari class.

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 Mobil {
    public static $jumlahMobil = 0; // Properti statis

    public function __construct() {
        self::$jumlahMobil++; // Setiap objek yang dibuat akan menambah jumlahMobil
    }

    public static function jumlahMobil() {
        return self::$jumlahMobil;
    }
}

$mobil1 = new Mobil();
$mobil2 = new Mobil();

echo "Jumlah Mobil: " . Mobil::jumlahMobil();

Dalam contoh ini, kita menggunakan properti static $jumlahMobil untuk menghitung jumlah object Mobil yang telah dibuat. Static property ini tidak terkait dengan objek individu, melainkan dengan class itu sendiri.

```
Deklarasi Properti secara Implisit

Anda juga bisa mendeklarasikan properti secara implisit di PHP, meskipun ini tidak disarankan karena bisa menyebabkan kesalahan yang sulit ditemukan. Berikut adalah contoh deklarasi properti secara implisit di luar class.

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 {}

$pengguna1 = new Pengguna();
$pengguna1->nama = "Alice"; // Properti dideklarasikan secara implisit
echo $pengguna1->nama;

Pada contoh ini, kita langsung menetapkan properti nama di luar class Pengguna. Meskipun kode ini berfungsi, mendeklarasikan properti secara implisit bisa menyebabkan masalah jika ada kesalahan penulisan atau kebingungannya.

```
Menggunakan Method Magis __get() dan __set()

PHP juga memiliki method magis __get() dan __set() yang memungkinkan kita untuk mengakses atau menetapkan nilai pada properti yang tidak ada. Ini berguna jika kita ingin menangani data secara dinamis, seperti mengakses nilai dari database.

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 {
    private $data = [];

    // Method magis __get untuk mengambil nilai properti
    public function __get($property) {
        if ($property === 'biografi') {
            return "Biografi panjang..."; // Mengambil data dari database
        }
    }

    // Method magis __set untuk menetapkan nilai properti
    public function __set($property, $value) {
        if ($property === 'biografi') {
            $this->data['biografi'] = $value; // Menyimpan data ke database
        }
    }
}

$pengguna = new Pengguna();
echo $pengguna->biografi; 
$pengguna->biografi = "Biografi baru"; // Menyimpan data baru

Dalam contoh ini, kita menggunakan method magis __get() dan __set() untuk mengelola akses ke properti biografi, yang tidak dideklarasikan sebelumnya. Ini memungkinkan kita untuk menangani data secara dinamis, seperti menarik dan menyimpan informasi dari sumber eksternal (misalnya database).

LATIHAN

Untuk menguji seberapa paham kamu tentang materi deklarasi properti dalam PHP, susunlah potongan-potongan kode berikut menjadi urutan kode PHP yang benar!

Petunjuk: Tulis jawabanmu berupa urutan angka, dipisah dengan spasi. Contoh format jawaban yang benar: 1 5 4 2 3 6

Catatan: Terdapat dua baris dengan kurung kurawal tutup }. Untuk membantumu menyusun, perhatikan komentar di sampingnya yang menunjukkan penutup blok mana (method atau class).

  • 1. public function infoTanaman() {
  • 2. return "Nama: " . $this->nama;
  • 3. public $nama = "Bambu";
  • 4. class Tanaman {
  • 5. } // penutup method infoTanaman()
  • 6. } // penutup class Tanaman
```