Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Constructor và Destructor trong PHP

Giới thiệu

Trong thuật ngữ lập trình hướng đối tượng, constructor (hàm khởi tạo) là phương thức được định nghĩa bên trong một lớp và được gọi tự động tại thời điểm tạo đối tượng. Mục đích của constructor là khởi tạo đối tượng. Trong PHP, phương thức có tên đặc biệt __construct đóng vai trò constructor.

Cú pháp

__construct([mixed $args = ""]): void

Ví dụ constructor cơ bản

Constructor tự động thực thi khi đối tượng được khai báo:

<?php
class myclass {
    function __construct() {
        echo "object initialized";
    }
}
$obj = new myclass();
?>

Kết quả

object initialized

Constructor với tham số

Các thuộc tính lớp được khởi tạo bằng constructor có tham số:

<?php
class rectangle {
    var $height;
    var $width;
    function __construct($arg1, $arg2) {
        $this->height = $arg1;
        $this->width = $arg2;
    }
    function show() {
        echo "Height=$this->height Width=$this->width";
    }
}
$obj = new rectangle(10, 20);
$obj->show();
?>

Kết quả

Height=10 Width=20

Constructor trong kế thừa

Nếu lớp cha có constructor, nó có thể được gọi trong constructor của lớp con bằng parent::__construct(). Tuy nhiên, nếu lớp con không định nghĩa constructor, nó sẽ kế thừa constructor từ lớp cha.

<?php
class a {
    function __construct() {
        echo "this is a constructor of base class\n";
    }
}
class b extends a {
    function __construct() {
        parent::__construct();
        echo "this a constructor class b\n";
    }
}
class c extends a {
    // không định nghĩa constructor
}
$a = new a();
$b = new b();
$c = new c();
?>

Kết quả

this is a constructor of base class
this is a constructor of base class
this a constructor class b
this is a constructor of base class

Destructor (Hàm hủy)

Destructor là phương thức được gọi tự động ngay khi garbage collector (bộ dọn rác) phát hiện một đối tượng không còn tham chiếu nào. Trong PHP, destructor có tên là __destruct. Trong trình tự shutdown (tắt), các đối tượng cũng sẽ bị hủy. Destructor không nhận tham số và không trả về giá trị.

Ví dụ

<?php
class myclass {
    function __construct() {
        echo "object is initialized\n";
    }
    function __destruct() {
        echo "object is destroyed\n";
    }
}
$obj = new myclass();
?>

Kết quả

object is initialized
object is destroyed