PHP - Konstruktor dan Destruktor

Selamat datang ke perjalanan kita ke dunia pemrograman PHP! Hari ini, kita akan mendalami dua fungsi khusus yang dapat dimiliki setiap kelas PHP: __construct() dan __destruct(). Kedua fungsi ini dikenal sebagai konstruktor dan destruktor, masing-masing, dan mereka memainkan peran penting dalam mengelola siklus kehidupan objek. Mari kita mulai!

PHP - Constructor and Destructor

Fungsi __construct()

Fungsi __construct() adalah metode khusus yang secara otomatis dipanggil saat objek dibuat dari kelas. Itu seperti pesta welcome untuk objek baru Anda! Anda dapat menggunakannya untuk menginisialisasi properti atau melakukan tugas-tugas setup yang diperlukan oleh objek Anda.

Contoh 1: Konstruktor Dasar

class Fruit {
public $name;

public function __construct($fruitName) {
$this->name = $fruitName;
}
}

$apple = new Fruit("Apple");
echo $apple->name; // Output: Apple

Dalam contoh ini, kita mendefinisikan kelas Fruit dengan konstruktor yang menerima satu parameter, $fruitName. Saat kita membuat objek Fruit baru, kita kirimkan "Apple" sebagai argumen, yang mengatur properti $name objek ke "Apple".

Konstruktor Parameterized

Konstruktor parameterized memungkinkan Anda mengirimkan argumen ke konstruktor, membuatnya lebih fleksibel. Dengan cara ini, Anda dapat membuat objek dengan state awal yang berbeda berdasarkan parameter yang diberikan.

Contoh 2: Konstruktor Parameterized

class Car {
public $make;
public $model;
public $year;

public function __construct($make, $model, $year) {
$this->make = $make;
$this->model = $model;
$this->year = $year;
}
}

$myCar = new Car("Toyota", "Camry", 2020);
echo $myCar->make; // Output: Toyota
echo $myCar->model; // Output: Camry
echo $myCar->year; // Output: 2020

Dalam contoh ini, kita telah memperluas kelas Car untuk termasuk konstruktor parameterized yang menerima tiga parameter: $make, $model, dan $year. Saat kita membuat objek Car baru, kita dapat menentukan nilai ini, memungkinkan kita untuk membuat mobil dengan make, model, dan tahun yang berbeda.

Overloading Konstruktor

Overloading konstruktor tidak didukung secara langsung di PHP, tetapi Anda dapat mencapai fungsi serupa menggunakan parameter opsional atau nilai default. Hal ini memungkinkan Anda untuk membuat beberapa konstruktor dengan jumlah atau jenis parameter yang berbeda.

Contoh 3: Overloading Konstruktor ( Menggunakan Parameter Opsional)

class Book {
public $title;
public $author;
public $pages;

public function __construct($title, $author = null, $pages = null) {
$this->title = $title;
$this->author = $author;
$this->pages = $pages;
}
}

$book1 = new Book("Harry Potter");
$book2 = new Book("Lord of the Rings", "J.R.R. Tolkien");
$book3 = new Book("The Great Gatsby", "F. Scott Fitzgerald", 180);

Dalam contoh ini, kita telah menambahkan parameter opsional ke konstruktor Book. Saat membuat objek Book baru, Anda dapat memberikan hanya judul, atau Anda juga dapat memberikan penulis dan jumlah halaman. Jika Anda tidak memberikan parameter opsional ini, nilai default mereka adalah null.

Deklarasi Tipe di Konstruktor

Deklarasi tipe di konstruktor PHP tidak diperlukan, karena PHP adalah bahasa yang lemah tipe. Namun, jika Anda ingin menegakkan pemeriksaan tipe, Anda dapat menggunakan fungsi assert() dalam konstruktor Anda.

Contoh 4: Deklarasi Tipe di Konstruktor ( Menggunakan assert())

class Student {
public $name;
public $age;

public function __construct($name, $age) {
assert(is_string($name), "Name must be a string");
assert(is_int($age), "Age must be an integer");

$this->name = $name;
$this->age = $age;
}
}

$student = new Student("Alice", 25); // No error
$student2 = new Student(123, "Bob"); // Error: Name must be a string, Age must be an integer

Dalam contoh ini, kita menambahkan pemeriksaan tipe menggunakan assert() dalam konstruktor Student. Jika argumen yang diberikan tidak cocok dengan tipe yang diharapkan, kesalahan akan ditampilkan. Catatan bahwa ini bukan praktik umum di PHP, karena itu dapat membuat kode kurang fleksibel dan sulit dipelihara.

Fungsi __destruct()

Fungsi __destruct() adalah metode khusus yang secara otomatis dipanggil saat objek dihancurkan atau keluar dari rentang. Itu seperti pesta pergaulan untuk objek Anda! Anda dapat menggunakannya untuk membersihkan sumber daya, menutup koneksi, atau melakukan tugas-tugas penyelesaian lain sebelum objek dihapus dari memori.

Contoh 5: Destructor Dasar

class FileHandler {
private $file;

public function __construct($filename) {
$this->file = fopen($filename, 'r');
}

public function __destruct() {
fclose($this->file);
}
}

$fileHandler = new FileHandler('example.txt'); // Opens the file
// ... Do some operations with the file ...
// File is automatically closed when $fileHandler goes out of scope

Dalam contoh ini, kita mendefinisikan kelas FileHandler yang membuka file dalam konstruktor dan menutupnya dalam destructor. Saat kita membuat objek FileHandler baru dan itu keluar dari rentang (misalnya, akhir dari skrip atau ketika tidak lagi direferensikan), destructor secara otomatis dipanggil, menutup file.

Itu saja untuk hari ini! Kita telah melihat dasar-dasar konstruktor dan destruktor di PHP. Ingat, metode ini adalah alat yang kuat yang memungkinkan Anda mengontrol siklus kehidupan objek dan memastikan manajemen sumber daya yang proper. Selamat coding!

Credits: Image by storyset