PHP: Hàm Tạo (Constructor) Và Hàm Hủy (Destructor) | V1Study

Cú pháp: void __construct ([ mixed $args = "" [, $... ]] )

Từ phiên bản PHP 5 cho phép các nhà phát triển khai báo các hàm tạo cho lớp. Hàm tạo sẽ có nhiệm vụ khởi tạo giá trị cho các thuộc tính của đối tượng của lớp đó trước khi đối tượng được đem sử dụng.

Lưu ý: Các hàm tạo của lớp cha sẽ không được gọi ngầm định nếu lớp con có định nghĩa hàm tạo. Lúc này, nếu bạn muốn thực thực thi hàm tạo của lớp cha thì ở trong hàm tạo của lớp con ta sẽ thực hiện câu lệnh parent::__construct(). Nếu lớp con không định nghĩa hàm tạo thì nó có thể được thừa kế hàm tạo từ lớp cha.

Ví dụ 1: Ví dụ về hàm tạo.

<?php class BaseClass { function __construct() { print "Trong hàm tạo của lớp BaseClass\n"; } } class SubClass extends BaseClass { function __construct() { parent::__construct(); print "Trong hàm tạo của lớp SubClass\n"; } } class OtherSubClass extends BaseClass { // Lớp này sẽ thừa kế hàm tạo của lớp BaseClass // do không định nghĩa hàm tạo } // Gọi tới hàm tạo của lớp BaseClass $obj = new BaseClass(); // Câu lệnh này sẽ gọi tới hàm tạo của cả lớp BaseClass và SubClass $obj = new SubClass(); // Gọi tới hàm tạo của lớp BaseClass $obj = new OtherSubClass(); ?>

Không giống với phương thức thông thường, PHP sẽ không phát sinh lỗi khi hàm tạo __construct() được ghi đè với sự khác nhau về tham số so với hàm tạo __construct của lớp cha.

Lưu ý là từ phiên bản PHP 5.3.3 thì những phương thức có tên trùng với tên của lớp nằm trong namespace sẽ không còn được coi là hàm tạo của lớp đó nữa. Đương nhiên là những lớp không nằm trong namespace sẽ không chịu ảnh hưởng bởi điều này.

Ví dụ 2: Hàm tạo của lớp nằm trong namespace.

<?php namespace Foo; class Bar { public function Bar() { // được hiểu là hàm tạo ở bản PHP 5.3.0-5.3.2 // điểu là phương thức chính quy từ bản PHP 5.3.3 } } ?>

Từ khóa » Hàm Constructor Trong Php