Mục đích chính của một kẻ hủy diệt là gì?
Bạn có thể đưa ra bất kỳ ví dụ nào về những gì tôi có thể muốn chạy khi một đối tượng bị xóa?
Hakre
188K49 Huy hiệu vàng419 Huy hiệu bạc809 Huy hiệu đồng49 gold badges419 silver badges809 bronze badges
Hỏi ngày 11 tháng 4 năm 2010 lúc 19:54Apr 11, 2010 at 19:54
never_had_a_namenever_had_a_namenever_had_a_name
87.7K102 Huy hiệu vàng265 Huy hiệu bạc382 Huy hiệu Đồng102 gold badges265 silver badges382 bronze badges
Nó cho đối tượng một cơ hội để chuẩn bị bị giết. Điều này có thể có nghĩa là dọn dẹp thủ công, sự kiên trì của nhà nước, v.v.
Ví dụ, một mô hình có thể muốn lưu tất cả các thuộc tính hiện tại của nó trở lại cơ sở dữ liệu.
Hoặc, một đối tượng cơ sở dữ liệu có thể muốn đóng ổ cắm mà nó đang sử dụng để liên lạc với máy chủ cơ sở dữ liệu.
Đã trả lời ngày 11 tháng 4 năm 2010 lúc 19:59Apr 11, 2010 at 19:59
2
Vì vậy, bạn có thể biết những gì một nhà xây dựng làm. Nếu một nhà xây dựng thiết lập, một chất phá hủy sẽ làm sạch. Đây là một ví dụ từ trang web PHP:
Đây là liên kết đến tài liệu PHP về chủ đề này.
Đã trả lời ngày 11 tháng 4 năm 2010 lúc 20:00Apr 11, 2010 at 20:00
Byron Sommardahlbyron SommardahlByron Sommardahl
12.6K15 Huy hiệu vàng74 Huy hiệu bạc130 Huy hiệu đồng15 gold badges74 silver badges130 bronze badges
1
Giả sử tôi có một lớp Result
là một trình bao bọc [triển khai iterator, trong số các tính năng khác] cho đối tượng mysqli_result. Khi tôi phá hủy một trong các đối tượng Result
của mình, tôi muốn chắc chắn gọi phương thức free[]
trên đối tượng mysqli_result
để đòi lại bộ nhớ mà nó đang sử dụng. Vì vậy, tôi làm điều đó trong bộ phận phá hủy của lớp Result
của tôi.
Đã trả lời ngày 11 tháng 4 năm 2010 lúc 20:00Apr 11, 2010 at 20:00
Byron Sommardahlbyron Sommardahlgrossvogel
12.6K15 Huy hiệu vàng74 Huy hiệu bạc130 Huy hiệu đồng1 gold badge25 silver badges36 bronze badges
Giả sử tôi có một lớp Result
là một trình bao bọc [triển khai iterator, trong số các tính năng khác] cho đối tượng mysqli_result. Khi tôi phá hủy một trong các đối tượng Result
của mình, tôi muốn chắc chắn gọi phương thức free[]
trên đối tượng mysqli_result
để đòi lại bộ nhớ mà nó đang sử dụng. Vì vậy, tôi làm điều đó trong bộ phận phá hủy của lớp Result
của tôi.
Grossvogelgrossvogel
marc_s
6.6541 Huy hiệu vàng25 Huy hiệu bạc36 Huy hiệu đồng172 gold badges1315 silver badges1435 bronze badges
Tài liệu tham khảo cho cuốn sáchNov 25, 2018 at 14:48
Destructor thường sử dụng cho các kết nối DB gần và fclose []
cho kết nối fopen[]
trong lớpzloctb
716K172 Huy hiệu vàng1315 Huy hiệu bạc1435 Huy hiệu Đồng6 gold badges67 silver badges85 bronze badges
Constructor có liên quan tự động khi đối tượng được tạo. Destructor có liên quan tự động khi đối tượng bị phá hủy. Được sử dụng để khởi tạo thể hiện của một lớp. Được sử dụng để khử các đối tượng đã tồn tại để giải phóng bộ nhớ cho chỗ ở mới.
Việc sử dụng cơ bản của chất hủy diệt trong OOP là gì?
Destructor là một hàm thành viên được gọi tự động khi đối tượng đi ra khỏi phạm vi hoặc bị phá hủy rõ ràng bởi một cuộc gọi để xóa. Một kẻ phá hủy có cùng tên với lớp, trước một tilde [~].
Tại sao chúng ta sử dụng $ này trong PHP?
$ Đây là một từ khóa dành riêng trong PHP đề cập đến đối tượng gọi. Nó thường là đối tượng mà phương thức thuộc về, nhưng có thể là một đối tượng khác nếu phương thức được gọi là tĩnh từ bối cảnh của một đối tượng thứ cấp.
Thí dụ
Lưu ý rằng chức năng phá hủy bắt đầu với hai dấu gạch dưới [__]!
class Fruit {
public $name;
public $color;
& nbsp; hàm __construct [$ name, $ color] {& nbsp; & nbsp; & nbsp; $ this-> name = $ name; & nbsp; & nbsp; & nbsp; $ this-> color = $ color; & nbsp; } & nbsp; hàm __destruct [] {& nbsp; & nbsp; & nbsp; echo "quả là {$ this-> name} và màu là {$ this-> color}."; & nbsp; }}
$this->name = $name;
}
function __destruct[] {
echo "The fruit is {$this->name}.";
}
}
$ apple = new Fruit ["Apple"]; ?>
?>
Hãy tự mình thử »
Một vi dụ khac:
Thí dụ
Lưu ý rằng chức năng phá hủy bắt đầu với hai dấu gạch dưới [__]!
class Fruit {
public $name;
public $color;
& nbsp; hàm __construct [$ name, $ color] {& nbsp; & nbsp; & nbsp; $ this-> name = $ name; & nbsp; & nbsp; & nbsp; $ this-> color = $ color; & nbsp; } & nbsp; hàm __destruct [] {& nbsp; & nbsp; & nbsp; echo "quả là {$ this-> name} và màu là {$ this-> color}."; & nbsp; }}
$this->name = $name;
$this->color = $color;
}
function __destruct[] {
echo "The fruit is {$this->name}
and the color is {$this->color}.";
}
}
$ apple = new Fruit ["Apple", "Red"]; ?>
?>
Hãy tự mình thử »
Một vi dụ khac: As constructors and destructors helps reducing the amount of code, they are very useful!