0Pricing
PHP Academy · Pelajaran

Constructor dan Destructor

Inisialisasi objek dengan __construct dan bersihkan dengan __destruct.

Constructor dan Destructor adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.

Pendahuluan: Konstruktor dan Destruktor

Metode __construct() dijalankan secara otomatis ketika objek baru dibuat. Metode __destruct() dijalankan ketika objek dikumpulkan oleh pengumpul sampah. PHP 8 memperkenalkan promosi properti konstruktor.

Konsep Inti

Konsep-konsep utama konstruktor dan destruktor:

  • __construct() menginisialisasi objek
  • Promosi properti konstruktor mempersingkat kode
  • __destruct() digunakan untuk pembersihan (deskriptor berkas, koneksi)
  • Konstruktor induk dipanggil dengan parent::__construct()

Konstruktor Dasar

Contoh:

<?php
class User {
    public string $name;
    public string $email;

    public function __construct(string $name, string $email) {
        $this->name  = $name;
        $this->email = $email;
    }
}

$user = new User('Alice', 'alice@example.com');
echo $user->name; // Alice

Promosi Konstruktor (PHP 8)

Kelanjutan:

<?php
class User {
    // Shorthand: declare and assign in one go
    public function __construct(
        public readonly string $name,
        public readonly string $email,
        private int $loginCount = 0,
    ) {}
}

$u = new User('Bob', 'bob@test.com');
echo $u->name;  // Bob

Validasi dalam Konstruktor

Latihan:

<?php
class PositiveInt {
    public function __construct(private int $value) {
        if ($value <= 0) {
            throw new InvalidArgumentException(
                "Value must be positive, got $value"
            );
        }
    }
    public function get(): int { return $this->value; }
}

$n = new PositiveInt(5);  // OK
// new PositiveInt(-1);   // throws

Destruktor

Pendalaman:

<?php
class FileLogger {
    private mixed $handle;

    public function __construct(string $path) {
        $this->handle = fopen($path, 'a');
    }

    public function log(string $msg): void {
        fwrite($this->handle, date('c') . ' ' . $msg . PHP_EOL);
    }

    public function __destruct() {
        if ($this->handle) fclose($this->handle);
        echo 'File handle released';
    }
}

Pola Konstruktor Bernama

Penggunaan lanjutan:

<?php
class Money {
    private function __construct(
        private float  $amount,
        private string $currency
    ) {}

    public static function usd(float $a): self { return new self($a, 'USD'); }
    public static function eur(float $a): self { return new self($a, 'EUR'); }

    public function format(): string {
        return number_format($this->amount, 2) . ' ' . $this->currency;
    }
}

echo Money::usd(9.99)->format(); // 9.99 USD

Konstruktor Induk

Pola dunia nyata:

<?php
class Animal {
    public function __construct(
        protected string $name,
        protected string $sound
    ) {}
}

class Dog extends Animal {
    public function __construct(string $name) {
        parent::__construct($name, 'Woof');
    }
    public function speak(): string {
        return "{$this->name} says {$this->sound}!";
    }
}

echo (new Dog('Rex'))->speak();  // Rex says Woof!

Pengikatan Statis Terlambat dalam Konstruktor

Praktik terbaik:

<?php
class Base {
    public static function create(): static {
        return new static();  // 'static' resolves to calling class
    }
}

class Child extends Base {}

$base  = Base::create();   // Base object
$child = Child::create();  // Child object — static binding works

Pola Praktis

Menyatukan semuanya melalui pola praktis untuk konstruktor dan destruktor.

Kesalahan Umum

Hindari kesalahan umum berikut saat menggunakan konstruktor dan destruktor:

  • Selalu panggil parent::__construct() saat memperluas kelas
  • Gunakan promosi konstruktor dalam PHP 8+ untuk mengurangi kode berulang
  • Destruktor tidak dijamin dijalankan pada waktu tertentu
  • Lebih baik gunakan konstruktor bernama daripada beberapa kelebihan beban __construct()

Pemeriksaan Singkat

Apa yang dimaksud dengan promosi properti konstruktor dalam PHP 8?

Ringkasan: Konstruktor dan Destruktor

Anda telah mempelajari konstruktor dan destruktor. Poin-poin penting yang perlu diingat:

  • Selalu panggil parent::__construct() saat memperluas kelas
  • Gunakan promosi konstruktor dalam PHP 8+ untuk mengurangi kode berulang
  • Destruktor tidak dijamin dijalankan pada waktu tertentu
  • Lebih baik gunakan konstruktor bernama daripada beberapa kelebihan beban __construct()

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Constructor dan Destructor” gratis?

Ya — teks lengkap “Constructor dan Destructor” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Constructor dan Destructor”?

Inisialisasi objek dengan __construct dan bersihkan dengan __destruct. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai PHP Academy?

Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Constructor dan Destructor” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?

Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Class, Properti, dan Method
  2. Constructor dan Destructor
  3. Properti dan Method Statis
  4. Gambaran Umum Method Ajaib
← Kembali ke PHP Academy