2009-09-12 30 views

Trả lời

6

Có một cách để tự hủy một đối tượng:

Sử dụng mảng $GLOBALS để tìm ví dụ của bạn trong nó, sau đó sử dụng unset(). Hãy nhận biết rằng unset() không tự động gọi __destruct() magic method mọi lúc ...

Có một lưu ý đó theo cách này (xem tài liệu unset()) trong tài liệu PHP, nhưng nó không giải thích chính xác khi nào unset() làm không gọi phương thức __destruct().

Và tôi có hành vi cụ thể này:

tôi làm một:

unset($myInstance); 
$myInstance = clone $otherInstance; 

__constructor được gọi là đầu tiên, sau đó các __destruct(). Hoặc tôi muốn số __destruct() được gọi trước tiên bởi vì unset() trước khi sao chép ... Tôi bị kẹt với điều đó ngay bây giờ ...

Nicolas.

+2

Các cấu trúc được gọi trên bộ sưu tập rác hoặc khi tập lệnh chấm dứt. – hakre

+0

Như hakre đã nêu, cho đến khi biến $ myInstance nằm ngoài phạm vi và việc thu gom rác thải được chọn, hàm hủy sẽ không được gọi. – Swivel

0

Không, tôi không nghĩ là có. Nhưng bạn sẽ cần điều đó?

+1

Vâng, tại sao không? Nếu bạn đang tạo ra đối tượng, người ta sẽ cho rằng sẽ có khả năng tiêu diệt chúng. – Christian

+2

@Christian khả năng tiêu diệt một leis đối tượng ở cùng một nơi mà khả năng tạo ra chúng - không phải bên trong đối tượng. –

12

Nếu phương thức được gọi trong ngữ cảnh của đối tượng thì phải có ít nhất một tham chiếu đến đối tượng đó. Và kể từ khi php chỉ loại bỏ các đối tượng không thể truy cập câu trả lời là: không.

Các vấn đề liên quan