post-image

construct và destruct trong PHP

Tổng quan

Hàm tạo có lẽ các bạn đã được nghe nhiều trong các ngôn ngữ lập trình khác. Vậy nên trong bài viết này sẽ giới thiệu về 2 phương thức cơ bản trong hướng đối tượng của PHP đó là construct và destruct. Cùng tìm hiểu ở bài này nhé.

Giới thiệu construct và destruct

Đầu tiên chúng ta cùng tìm hiểu về 2 phương thức cơ bản trong hướng đối tượng (OOP) của PHP:

__construct

Hàm __construct (), cho phép chúng ta có thể khởi tạo các thuộc tính của một đối tượng khi chúng được tạo ra.

Khi phương thức __construct() được viết, PHP sẽ tự động gọi hàm này khi tạo một đối tượng từ một lớp.

Chú ý: phương thức __construct() phải được viết bằng 2 dấu gạch dưới ở phía trước nhé.

__destruct

Một trình hủy được gọi khi đối tượng bị hủy hoặc tập lệnh bị dừng hoặc thoát

Khi gọi hàm __destruct(), PHP tự động gọi hàm này ở cuối tập lệnh

Giống __construct(), được tạo bằng 2 dấu gạch dưới ở phía trước.

Ví dụ

<?php
class Audi
{
public $infor;
public $money;

function __construct($infor, $money)
{
$this->infor = $infor;
$this->money = $money;
}

function get_infor()
{
return $this->infor;
}

function get_money()
{
return $this->money;
}
}

$audi = new Audi('TT', '100000 USD');
?>

Ta có thể thấy rằng hàm __construct() giúp giảm thiểu rất nhiều trong việc code và không cần sử dụng đến 2 phương thức là set_infor() và set_money()

<?php
class Fruit {
public $name;
public $color;

function __construct($name) {
$this->name = $name;
}
function __destruct() {
echo "The fruit is {$this->name}.";
}
}

$apple = new Fruit("Apple");
?>
Ở ví dụ trên việc chúng ta sử dụng cả 2 phương thức giúp giảm được lượng lớn code, giúp giảm thiểu khả năng xảy ra lỗi của chương trình.

Vậy nên khi bạn lập trình một ứng dụng bằng PHP thì nên sử dụng cả 2 phương thức trên. Việc sử dụng chúng không những giúp đoạn code của bạn trở nên ngắn gọn hơn mà còn giúp cho giảm thiểu khả năng xảy ra lỗi và giúp ta có thể kiểm soát lỗi một cách dễ dàng hơn.

Leave a Reply

Your email address will not be published. Required fields are marked *